2

私は現在gitoliteを使用しており、受信後のフックで、着信コミットがマスター上にある場合は(ローカル)ミラーにプッシュしています。

つまり、そのミラーは、マスターへのプッシュでのデプロイとテストを自動化したいためにのみ存在します。のインデックスファイルを取得できないためwork.git、非ベアworkリポジトリにプッシュして作業ツリーを取得し、ポストレシーブフックを完全に分離します。

このアプローチには2つの問題があります。

  1. 馬鹿げた感じ
  2. テストが失敗すると、コミットが拒否されるのではなく、通知メールが届きます。(実際には頻度の点でそれほど大きな問題ではありません、私はそれが好きではありません。)

これに対処する標準的な方法は何ですか?

4

1 に答える 1

1

馬鹿じゃない。ベアリポジトリは、理由からベアと呼ばれます。(これが「生」の意味だと思います。)

あなたの本当の質問に答えるには、一歩下がって、実際に何をしようとしているのかを尋ねる必要があると思います。コミットを拒否しますか?コミットはローカルであり、プッシュとは関係ありません。そのため、コミット前のフックでも手動でも、自動テストを自分で実行する必要があります。プッシュを拒否しますか?post -receive(またはpost-update)はそれには遅すぎますが、本当に必要な場合は、 pre -receiveでテストを実行できます。-フックを受信(または更新)します。ただし、これは悪い考えだと思います。テストには時間がかかり、テストが終了するまでプッシュがハングするまで実際に待機したいかどうかはわかりません。(個別のリポジトリを持つことに関する取り決めは、実際には関係ありません。フックはいくつかのコマンドを実行し、それらが別のリポジトリに関係するかどうかに関係なく、フックが終了する前に終了する必要があります。)

しかし、おそらくより持続可能なワークフローは次のようになります。プレマスターブランチにプッシュし、自動テストを終了し、テストが完了すると、マスターブランチに自動的にプッシュします。テストが失敗した場合、マスターブランチは更新されないため、メールを受け取って確認することができます。

于 2012-04-07T21:05:59.903 に答える