4

Mercurialリポジトリに保持されているコードベースで、さまざまなビルドテストを実行する必要があります。これらのテストは共通ファイルのセットを変更し、異なるマシンで並行して実行したいので、同じリポジトリでこれらのテストを連続して実行したくありません。また、すべてのテストを実行した後、それらのテスト作業領域からの最新のテスト結果にアクセスしたいと思います。現在、マスターリポジトリのクローンを数十回作成しており、各クローンで1つの異なるテストを実行しています。各テストを実行する前に、最新のクリーンな状態でテストを開始するために、プル/更新/パージの準備シーケンスを実行します。それは私にとって良いことです。

また、コミットする前に上記のようにすべてのクローンでテストするmq拡張機能を使用して新しい変更を準備しています。いくつかの準備ができている候補mqパッチをテストするために、テストクローンで使用できるようにそれらを展開/同期し、テストを実行する前にガードを使用してテストの準備ができているパッチを適用したいと思います。

誰かが以前にこの同期を行ったことがありますか?それを行う最も簡単な方法は何ですか?そのためにバージョン管理されたmqパッチが必要ですか?

4

3 に答える 3

7

「-c」スイッチをqinitに渡した場合、パッチは独自のリポジトリに保持できます。

hg qinit -c

事後にパッチリポジトリを作成できる場合があります。

cd .hg/patches
hg init
hg addremove
hg commit -m "my patches"

しかし、私はそれを個人的に試したことがありません。

そうすれば、.hg/patchesは他のMercurialリポジトリと同じように扱うことができます。ですから、おそらくシェルスクリプトを作成できると思います。複製されたリポジトリの.hgディレクトリに入り、

hg clone http://centralrepo.com/patch_repo ./patches
于 2010-04-13T12:20:05.633 に答える
2

これが私が実装したソリューションです。いくつかのメモ:

  • ready_for_testingで保護されているすべてのパッチと、保護されていないパッチがテストに適用されます。
  • キューリポジトリの実装を抽象化できるため、バージョン管理されたリポジトリを使用する方が適切です。
  • Mercurial1.5.1を使用しています
  • マスターリポジトリはmasterディレクトリ にあります
  • クローンリポジトリはclone-xdirsにあります

手順は次のとおりです(一部はオプションの場合があります)。

  1. 一度:Mercurialを使用したバージョン管理の下でマスターリポジトリにパッチを配置します
    hg -R master init --mq #ここではコミットは発生しません。後で実行できます
    。b。hg -R master commit --mq --addremove --message 'initial patch queue'#それらをクローンリポジトリに表示する

  2. クローンごとに、クローンの作成が終了した後、クローンにパッチがまだ作成されていないと仮定して、mqサブリポジトリを初期化します
    hg clone master\.hg\patches clone-x\.hg\patches
    b。hg -R clone-x qselect ready_for_testing

  3. マスターで準備ができている変更ごとに(mqリポジトリで作成/インポートされたパッチ):テストを開始する前にこれを実行します
    。mqパッチのガードのレビュー/更新:テスト用に含まれているものは、ガードされていないか、+ready_for_testingを使用する必要があります
    hg -R master commit --mq -A#それらをクローンリポジトリに表示する

  4. クローンごと、クローンごとの[テスト]反復ごと:実際のテストを実行する前に、この準備シーケンスを実行し
    ます。hg -R clone-x qpop --all --force
    b。hg -R clone-x pull
    c。hg -R clone-x update --clean
    d。hg -R clone-x purge --all
    e。hg -R clone-x pull --mq
    f。hg -R clone-x update --mq
    g。hg -R clone-x qpush --all

于 2010-04-13T15:19:52.053 に答える
1

Mercurialバージョン1.5以降、次のコマンドを使用して、既存のMercurialリポジトリにパッチキューリポジトリを作成できます。

hg init --mq

そのコマンドを発行するときに、パッチをキューに入れても問題ありません。

于 2010-11-03T02:54:24.773 に答える