0

post-commit フックを使用して、ソースから宛先にファイルをコピーしています (ソースと宛先はリポジトリのルート フォルダーです)。フォルダ。ソース配下のいずれかのフォルダにプロパティ(プロパティ名:バージョン)が適用されている場合、post-commit.batからpythonスクリプトを呼び出してコピーを行います。

コピーの実行中に 1 つの問題に直面しています。一部のフォルダーはソースから宛先にコピーされません。次の手順を実行して問題を発見しました。python スクリプトの最初に、リビジョン番号が記録され、コミットごとにログ ファイルへのパスが変更されます。ただし、いくつかの 2 つのフォルダーでは、ログ ファイルにプロパティ セット エントリ (リビジョン番号と変更されたパス) がありません。(post-commit.bat では、python スクリプトを呼び出しただけで、他には何もないことに注意してください)。2 回目の試行では、これら 2 つのフォルダーのプロパティ エントリがログ ファイルで利用可能であり、ファイルはコピー先フォルダーに正常にコピーされました。

Post-Commit フックが呼び出されない場合はありますか?

4

1 に答える 1

2

コミット後のフックは常に呼び出す必要がありますが、何らかの理由で失敗する可能性があり、コミットを行ったユーザーからの指示がない場合は、それを知ることができない場合があります。結局のところ、ユーザーに関する限り、コミットは完了しましたが、あまり意味のないエラーメッセージが表示されただけです。

さて、あなたは何をしているのですか?あるSubversionディレクトリから別のディレクトリにファイルをコピーしてから、それらの変更をコミットしていますか?もしそうなら、どのようにしてコミット後のフックが2回目に発火するのを防ぎますか。この場合、コミット後のフックが無限ループで発生するのを防ぐための天才システムが問題を引き起こしている可能性があります。

これを行っていない場合でも、コミット後のフックを作成して、数秒より長くかかる可能性のあることを行うことはお勧めできません。コミット後のフックが終了するまで、コミットは終了できません。コミット後のフックの実行に10秒かかる場合、ユーザーは何が起こっているのか疑問に思ってそこに座らなければなりません。

JenkinsなどのCIシステムを使用して、ディストリビューションの作成を処理することをお勧めします。Jenkinsはセットアップが簡単で、コミット後の地獄でユーザーのコミットプロセスを拘束することなく、コミット後を処理します。何らかの理由でコミット後のプロセスが失敗した場合、Jenkinsは問題を警告するために電子メールを送信できます。Jenkinsのユーザーインターフェイスは完全にWebベースであり、開発者はコミット後のプロセスの履歴を簡単に調べることができます。

于 2013-01-10T15:03:34.410 に答える