Git GUI と TortoiseGit が Git フックを呼び出す方法に奇妙なものが見られます。次のチェックアウト後のフックを考えると、git が powershell コマンドを実行してファイルを作成することが期待されます。
#!/bin/sh
c:/windows/system32/WindowsPowerShell/v1.0/PowerShell.exe -Command "New-Item File.txt -type file"
Git Bash を使用してこのフックを実行すると、リポジトリにファイルが作成されます。Atalassian の SourceTree を使用してこのフックを実行すると、ファイルも取得されます。TortoiseGit または GitGui からチェックアウトを呼び出すと、フックの動作がおかしくなり始めます。どちらもファイルを生成しません。
作成した単純な exe を呼び出すためのフック (bash) を取得できました。問題は、powershell または powershell の呼び出し方法にあるようです。-Sta、-ExecutionPolicy RemoteSigned、および -NoProfile を使用して powershell を呼び出そうとしましたが、Git Gui または TortoiseGit では何も機能しないようです。
私にとって大きな驚きは、フックが GitGui で正しく機能しないことでした。誰がこれを引き起こしているのか知っていますか?
再現方法:
- Win7 での実行
- Git-Gui バージョン 0.17.GITGUI を持っている
- Git バージョン 1.8.3.msysgit.0 を持っている
- 新しいレポを開始する
- post-checkout という .git/hooks の下の新しいリポジトリにファイルを作成します。
- 新しく作成されたチェックアウト後のフックに次のスクリプトを挿入します。
--
#!/bin/sh
c:/windows/system32/WindowsPowerShell/v1.0/PowerShell.exe -Command "New-Item File.txt -type file"
--
- 新しいレポに任意のファイルを追加/コミットします
- git bash を使用して、新しいリポジトリで git checkout master を実行します
- File.txt という名前のファイルを探します (git bash が powershell を正しく呼び出していることを確認します)
- 新しいファイルを削除する
- 同じリポジトリで GitGui または TortoiseGit を開き、マスターでチェックアウトを実行します
- File.txt というファイルを探します (存在しません)。
何か助け、考えはありますか?私は TCL を知らないので、GitGui がどのようにフックを呼び出しているのかよくわかりませんでした。