継続的インテグレーションのために Cruise Control.NET を使用する Web アプリ用の Kiln/Mercurial コード リポジトリがあります。通常、コードをローカルにコミットし、テストの準備ができたら、中央の Kiln サーバーにプッシュします。Cruise Control は、そのサーバー上のリポジトリを定期的にチェックして新しいリビジョンがないかどうかを確認し、それが見つかると、それをビルドして、結果のファイルを適切な Web サーバーにコピーします。テストが終了したら、メインの本番サーバーに手動でビルドを強制すると、すべて問題ありません。
しかし、最近、小さな問題が発生しました。先月実稼働にプッシュされたバージョンにバグが見つかり、修正する必要があります。それ以来、50 件ほどのコミットがあり、これらの 50 件のコミットで導入されたコードは、本番環境にはほど遠い状態です。本番環境にプッシュされたバージョンにローカルでロールバック (更新) してコードを修正できることはわかっていますが、それを Kiln にプッシュして Cruise Control に渡す方法はありません -- Kiln サーバー上の Mercurial が複数の頭。これに取り組む最善の方法は何ですか?
少しググったところ、分岐とタグへの参照が見つかりました。最終的に、Kiln サーバーのリポジトリに新しいブランチを作成しました。そのブランチには、50 件のコミットを差し引いたメイン リポジトリがありました。次に、バグ修正を行い、Cruise Control 構成を編集して、メイン リポジトリの代わりにそこに表示されるようにしました。いくつかのビルドの後、本番サーバーでバグが修正されました。これは、ロールバックして修正し、それを Web サーバーにプッシュするのにかなりの量の作業のように思えます。
私たちは小さなショップなので、通常は独自のプロジェクトを持っています。(今まで) 意図的な分岐はなく、最小限のマージも行われていないため、バージョン管理は初めてではありませんが、その概念にはまだ対処する必要のない一般的な側面があります。