ここで説明されているように、現在 git スキーマをセットアップしています。
問題のサーバーは、copSSH と msysGit を使用して Windows Server 2008 R2 を実行しています。
その要点は、git リポジトリのペアです。プッシュされる 1 つのベア リポジトリと、ライブ アプリケーションを含む別の非ベア リポジトリです。
プッシュ先のリポジトリには、次のような更新後のフックが含まれています。
echo
echo "**** Pushing data to Live Server."
echo
cd /cygdrive/c/Repositories/Live || exit
unset GIT_DIR
git pull hub master
exec git-update-server-info
注: ライブは、その名前が示すように、ライブである非ベア レポです。Live.git は、上記のフックを含み、プッシュされる裸のリポジトリです。/cygdrive/ なしでリポジトリに cd できませんでした。これは、診断プッシュで $pwd をエコーすることで明らかになりました。
Pull は Live リポジトリで正常に呼び出されますが、その更新で Live.git リポジトリを見つける際に問題が発生します。次のような「オッド ボール」エラーが表示されます。
remote: Pushing data to Live Server.ommand not foundnd not foundle or directory
remote: : not foundpdate-server-infoand not foundand not founddommand not found
ハブは、/c/Repositories/Live.git と /cygdrive/c/Repositories/Live.git の両方として、ローカルの git シェルを介してリモート リポジトリとして定義されます。
「../Live.git」のようなことを試しても、「ハブ」を直接のフォルダーパスに置き換えました。私が試したすべてがgitの更新に失敗しました。update コマンドで試行された Live.git のパスはすべて、作業ディレクトリが Live リポジトリに設定された git bash を介して試行され、機能しました。
リードやヘルプをありがとう!
更新: 私のスキーマでは、ハブ リポジトリからプルする必要があります。理由を説明するには不必要な量のスペースが必要ですが、そのような場合です。
さらにテストを行ったところ、私の問題についてより多くのことがわかりました。SSH 経由でリポジトリにプッシュすると、プライム ハブが正常にマウントされ、プル コマンドが実行されます。上記のプル コマンドがハブ リポジトリを解決しようとすると失敗しますが (上記で説明したように)、フック内の一連の ls コマンドでフォルダーが表示されないことが判明しました。/cygdrive/c/ で ls を実行したところ、usr というフォルダーしか表示されませんでした。私は、copSSH ユーザーがファイル システム全体に対して完全な管理者権限を持っていることを確認しました (テストとデバッグの目的のみ)。
パスで /cygdrive/ パスを使用する必要がある理由がわかりません。copSSH にパッケージされている cygwin 以外に cygwin をインストールしていません。これは構成に問題があることを示していますか? または、これはcopSSH + msysGitセットアップでは正常ですか? ls がリポジトリ フォルダを一覧表示しない場合でも、フックからプライム リポジトリをマウントできるのはどうしてですか?