受信後フックの作業ディレクトリでチェックアウトする次のコードがあります。
#!/bin/sh
git --work-tree=d:/websites/__gitweb --git-dir=d:/_gitrepo.git/ checkout -f
残念ながら、動作しないようです。ただし、Windowsコマンドライン(cms)に次のように入力すると、コマンドは機能します。
git --work-tree=d:/websites/__gitweb --git-dir=d:/_gitrepo.git/ checkout -f
権限と実行属性を確認しましたが、何もしませんでした。
更新:
近づいていると思います。今私は問題が何であるかを知っていますが、なぜこれが起こっているのか分かりません。フックは実際にトリガーされていますが、次のメッセージが表示されます。
remote: Starting copy from repository to work tree...
remote: fatal: Not a git repository: 'd:/_gitrepo.git/'
remote: Finished.
D:のパスをネットワークパス全体に変更しようとしましたが、それでも機能しません。リモートリポジトリに移動してgit logを実行すると、変更があり、フックをshで実行すると機能します。明らかにそれがgitリポジトリではないと言っているのはなぜですか?
やっと動いた!これは本当に奇妙です。 pwd
と入力して、実際にバッチが配置されている場所を確認する必要があり、サーバー上のフックの場所が表示されました。ただし、次の行にhostname
を追加すると、ローカルホスト名が表示されました。次に、次のようにパス全体を追加します。
#!/bin/sh
echo "Starting copy from repository to work tree..."
pwd
hostname
git --work-tree=//remotehost/d$/Webseiten/__gitweb --git-dir=//remotehost/d$/_gitr
epo.git checkout -f
echo "Finished."
この解決策が誰かのために役立つことを願っています
シェルスクリプト(およびこれらのフックスクリプトは、Windowsでも msysgitのmsysレイヤー を介してシェルとして実行されます)の場合、別の種類のパスを使用できます。
#!/bin/sh
git --work-tree=/d/websites/__gitweb --git-dir=/d/_gitrepo.git/ checkout -f
「 MinGWでのPosixパス変換 による他の可能性も参照してください。