Windowsでgitpost-receiveフックを動作させようとしています。
私はGit1.7.9(Msysgit)を使用しており、ローカルにリポジトリがあり、リモートサーバーにベアリポジトリがあります。フェッチ、コミット、プッシュなどができます。ファイルを作業フォルダー(展開プロセスの一部)にチェックアウトする受信後フックを設定しましたが、機能していないようです。
これが私がすることです:
- ファイルを変更し、ステージングしてコミットします
- リモートサーバーにプッシュ-正常に
- エコーが表示されることを期待します-エコーが表示されない
- サーバー上の作業フォルダを確認してください-最新のファイルがありません
- サーバーにログオンし、フックスクリプトを手動で実行します。最新のファイルが作業フォルダーにチェックアウトされます。
メッセージをエコーする以外に何もしないようにフックを変更しました。プッシュした後、コンソールにこれが表示されるはずだと読みました。しかし、これは表示されていないので、フックが発射されていないと推測できます。
リクエストを処理し、ローカルでGUIを介して一時停止しているサーバーで、gitdotaspxを使用してHTTPをプッシュしています。それが失敗した後、私はBonoboを試しましたが、GUIまたはbashコンソールを介してプッシュするとフックが機能しません。
私は誰かがこれをどこかで働いていると思いますが、2日間検索した後、私が見つけたのは役に立たない解決策か、同じ問題を抱えている人々が答えられなかったということです。
(私はgit初心者です)。
乾杯。
アップデート
私はそれがパーミッションに関係しているのではないかと考え始めていますが、NTFSではなくUnixパーミッションです。@eisがアクセス許可について言及したとき、私はNTFSを想定していました。しかし、さらに掘り下げた後でも、Windows上のGitはUnixファイルの権限をチェックしているようです。
ls -o
したがって、問題は、受信後のファイルが-rw-r--r--(644と思います)のように実行可能ではないことだと思います。これをbashで変更してからchmod 777 post-receive
実行するとls -o
、権限は同じになります。
奇妙なことに、(notepad ++を使用して)post-receiveを編集するとすぐに、実行ビットが削除されます。(.batで終わる私のテストスクリプトは実行ビットを保持しますが...)
ところで、私がログオンしているユーザーは(によるとls -o
)ファイルの所有者ですが、アクセス許可を設定できません。
今、本当に混乱し始めています。私は本当に明白な何かを逃していますか?
アップデート2
どちらchmod 777 post-receive
も機能しませんchmod a+x post-receive
。新しいクリーンな受信後ファイルを取得し、サーバーにアップロードしてアクセス許可を確認すると、実行されました。Windowsで(サンプルを削除するために)ファイルの名前を変更すると、executeが削除されます。私がbashでそれを実行すると、 mv
executeが保持されます。しかし、ファイルを編集するたびに(Windowsまたはviを使用したbashで)、executeは削除されます。
では、問題は、ファイルを編集するときに実行ビットが削除されるのはなぜですか?
うまくいけば、これが最後のハードルであり、実行されない原因です...