WindowsホストにGitサーバーをセットアップしています。最新のApacheをインストールし、msysGitで動作させました。私はSSHをまったく使用していません。HTTPをプッシュおよびプルできます。
次に、受信後フックを追加してビルドサーバーに通知したいのですが、その方法がわかりません。サーバーのリポジトリにサンプルのフックスクリプトがありますが、そこで何をすべきか混乱しています。そこに、という名前のWindowsバッチファイルを置くpost-receive.bat
か、それとも何か他のことをしますか?
これがすべて何をしているのか詳細については少しあいまいですが、ApacheはGit URLを検出すると、c:\ Program Files \ git \ libexec \ git-core\git-http-backend.exeを実行しています。git-http-backend.exeは受信後のフックをトリガーしますか?
更新
私は近づいています。hooks/post-receive
これが私のレポのフックです:
#!/c/Program Files/Git/bin/sh
curl http://mybuildserver:8080/job/Whazzup/build
#!/bin/sh
Windowsにはないので、シェバンを変更しました。これで、Apacheエラーログに次のメッセージが表示されますerror: cannot spawn hooks/post-receive: No such file or directory
ちなみに、Gitbashchmod
は機能していないようです。しかし、サンプルファイルの名前を変更することで、許可を得ることができましたpost-receive
。rwxr-xr-x
更新
シバンの行をに戻しました#!/bin/sh
が、Apacheエラーログに同じエラーが表示されますerror: cannot spawn hooks/post-receive: No such file or directory
。テストとして、hooksフォルダーでGit bashプロンプトを開き、でフックを実行すると./post-receive
、機能しました。
今すぐ更新 私は別の問題があるかどうか疑問に思っています。VonCのアドバイスを受けて、LocalSystemのサービスとしてではなく、自分のアカウントでコマンドラインからApachehttpdを実行してみました。それでも同じこと。プッシュとプルは正常に機能しますが、フックは実行されません。次に、Apacheを方程式から外してみました。リポジトリと同じコンピューター上のGitbashプロンプトから、(ファイルシステムを介して)クローンを作成し、変更、コミット、およびプッシュしました。しかし、フックはまだ実行されませんでした。
更新 OK、フックスクリプトにばかげた問題がありましたが、少なくとも同じコンピューターから(ファイルシステムを介して)リポジトリにプッシュすると実行されます。しかし、Apacheをプッシュするときはそうではありません。現在、Apacheは通常のアカウントで実行されており、Apacheアカウントがリポジトリを完全に制御します。プッシュは正常に機能しますが、受信後のフックは実行されません。