1

そのため、Windows の Bitnami trac スタックに trac-git プラグインを使用して trac をインストールしました。すべて正常に動作していますが、git リポジトリにコミットするたびに、trac で変更を確認する前に、開いuse_trac.batて呼び出す必要があります。trac-admin ProjectName repository resync

今私がやりたいpost-receiveのは、リポジトリのフックでこの行を呼び出すことですが、これをバットファイルから呼び出す方法に苦労しています。

どうすればこれを行うことができるか、誰にもアイデアがありますか?

編集:これまでのところ、私はこれをポストレシーブに持っています

echo "Resync repo"
"C:/path/to/repos/resync_git.bat"

私が手動で書いたこのバットファイルを呼び出すと機能しますが、これは呼び出しではありません。フックが勝つために正しく設定されていないためでしょうか?

そのファイルの内容は次のとおりです。

@echo off
CALL "C:\PROGRA~1\Trac\scripts\setenv.bat"
cd "C:\Program Files\Trac"
START "BitNami Trac Stack Environment" cmd
trac-admin C:/path/to/project changeset added "prjname"

後でここを使うかもしれませんtrac-admin C:/path/to/project repository resync "prjname"...

これが呼び出されると、次のようになります。

remote: Resync repo
remote: ./resync_git.bat: line 1: @echo: command not found
remote: ./resync_git.bat: line 2: CALL: command not found
remote: ./resync_git.bat: line 5: trac-admin: command not found
4

1 に答える 1

1

1つには、パス名のスラッシュはWindowsシステムでは逆方向です。ただし、スクリプトを狂わせるにはおそらく十分ではありません。

フックスクリプトが失敗するが手動で実行すると機能するという問題が発生した場合、スクリプトが実行時に「現在の作業ディレクトリ」と見なされるものと、スクリプトが実行されるユーザーアカウントの2つのうちの1つに起因することがよくあります。スクリプトが実行されます。最初の問題は、スクリプト内で絶対パスを使用するか、スクリプトの最初の行として特定のディレクトリに明示的に変更することで解決できます。2番目の問題は少し難しいかもしれません。権限の問題が原因の場合もあれば、別のPATHを持つユーザーとして実行されているスクリプトが原因の場合もあります。

いずれにせよ、ここで何が起こっているのかを正確に把握するには、さらにデバッグ情報が必要です。スクリプトを起動するコマンドで、stdoutとstderrをログファイルにリダイレクトして、関連する出力をキャプチャできるようにします。結果を質問に追加してください。より具体的な回答を提供できるはずです。

試してみる価値のあるもう1つの可能性は、余分な.batファイルを削除し、「trac-admin」呼び出しをフックスクリプトに直接配置することです。

コミット後のフックが実行されていることを確認しますか?「echo[%TIME%] Hook script running >> C:\ test.txt」のようなコマンドをフックスクリプトの先頭に追加して、何かが実際にログに記録されることを確認してください。そうでない場合、gitはフックスクリプトをまったく認識していない可能性があります。

于 2012-06-18T12:31:25.923 に答える