シナリオは次のとおりです。開発者のチームは、コミットが受け入れられる前に、すべての新しいコードが定義されたコーディング標準に一致し、すべての単体テストに合格していることを確認したいと考えています。すべてのテストは専用のテスト マシンで実行する必要があり、git サーバーを変更するアクセス権がないため、各開発マシンでローカル コミット フックを使用して行う必要があります。
仕様はかなり厳密ですが (たとえば、Windows や Subversion に切り替えていません)、これは現実世界の問題であるため、ほぼ適合するソリューションがあればある程度の柔軟性があります。
- Git と *nix を使用しています。
- テスト スイートを実行するには、更新されたコードを別のサーバーに送信する必要があります。
- コーディング標準に確実に一致するように、変更されたファイルのリストを提供する必要があります。
- これはかなり大きなコードベースであるため、コードベースの同一のコピーを確保するために必要な最小限の情報を送信する必要があります。
- テストが失敗した場合は、エラーとともにメッセージを表示し、コミットをブロックする必要があります。
- 開発チームを信頼しており、オプションを使用してテストをバイパスしても問題ないと仮定し
--no-verify
ます。
質問:テスト サーバーをローカル環境と同期させてテストを実行する最善の方法は何ですか? 新しいコミットの git パッチとハッシュ間の一致のようなものはありますか? Git を完全にスキップして、rsync だけを実行しますか? まったく別の何か?
2013 年 8 月 7 日更新:リモート リポジトリについて言及したことで自分自身を撃ちました。重要なのは、コードが共有/リモート リポジトリにプッシュされるのをブロックすることではなく、ローカル コミットが行われないようにすることです。これがベスト プラクティスと見なされるかどうかは、この場合の実際のポイントではありません。これは、この正確な機能を必要とする開発者の小さなチームに固有のものだからです。問題は、目標を達成するための最善の方法についてです。