0

継続的インテグレーションのために Cruise Control.NET を使用する Web アプリ用の Kiln/Mercurial コード リポジトリがあります。通常、コードをローカルにコミットし、テストの準備ができたら、中央の Kiln サーバーにプッシュします。Cruise Control は、そのサーバー上のリポジトリを定期的にチェックして新しいリビジョンがないかどうかを確認し、それが見つかると、それをビルドして、結果のファイルを適切な Web サーバーにコピーします。テストが終了したら、メインの本番サーバーに手動でビルドを強制すると、すべて問題ありません。

しかし、最近、小さな問題が発生しました。先月実稼働にプッシュされたバージョンにバグが見つかり、修正する必要があります。それ以来、50 件ほどのコミットがあり、これらの 50 件のコミットで導入されたコードは、本番環境にはほど遠い状態です。本番環境にプッシュされたバージョンにローカルでロールバック (更新) してコードを修正できることはわかっていますが、それを Kiln にプッシュして Cruise Control に渡す方法はありません -- Kiln サーバー上の Mercurial が複数の頭。これに取り組む最善の方法は何ですか?

少しググったところ、分岐とタグへの参照が見つかりました。最終的に、Kiln サーバーのリポジトリに新しいブランチを作成しました。そのブランチには、50 件のコミットを差し引いたメイン リポジトリがありました。次に、バグ修正を行い、Cruise Control 構成を編集して、メイン リポジトリの代わりにそこに表示されるようにしました。いくつかのビルドの後、本番サーバーでバグが修正されました。これは、ロールバックして修正し、それを Web サーバーにプッシュするのにかなりの量の作業のように思えます。

私たちは小さなショップなので、通常は独自のプロジェクトを持っています。(今まで) 意図的な分岐はなく、最小限のマージも行われていないため、バージョン管理は初めてではありませんが、その概念にはまだ対処する必要のない一般的な側面があります。

4

1 に答える 1

0

コードに問題があり、その後 50 件ほどコミットしたとのことでした。したがって、現在のコードを含むブランチを作成しました-50コミット。

だから私の提案は、あなたのブランチではなく、トランクだけであるべきだということです。ブランチ コードには、主要な変更のコードのみを含める必要があります。つまり、そのコードで長時間作業していて、その間にトランクで何らかのコードを実行する機会があり、本番環境に移行できる可能性があります。

したがって、CI を作成する際に、テストを実行できるように、トランクとブランチの両方に個別に CI をセットアップすることをお勧めします。

また、本番環境への移行はトランクからのみ行う必要があります。

于 2013-02-14T11:58:19.963 に答える