3

状況: Mercurial は初めてです。私は最近セットアップし、私に推奨されたモデルでリポジトリの使用を開始しました(以下の Rudi の図を参照)。順調に進んでいますが、最初の実用的なアプリケーションの問題に遭遇しました。Mercurial はフォワード/ブレンド マージを対象としているようで、バックアップしたいと思います。ベンダー ブランチから始めて、デフォルト ブランチと安定ブランチをクリーンアップし、変更をやり直して、デフォルトとしてチェックインしたいと考えています。次に、それを安定版にマージします。

V1----V2-------------V3---------V4     Vendor
 \     \              \          \
  D1----D2---D3--D4-D5-D6-D7-D8---D9   default
                  \           \    \
                   S1----------S2---S3 stable

質問:ベンダー ブランチを親として開始し、デフォルトの変更をマージしてデフォルト ブランチにコミットするにはどうすればよいですか?

次のようにすると思いましたが、更新により作業ディレクトリが変更されます。

hg update -C vendor
hg update default
hg merge
4

2 に答える 2

4

これには2つの方法があります。正しいものと都合の良いもの。最初に正しいことをします:

hg update default
hg --config ui.merge=internal:other merge vendor

これにより、親がデフォルトに更新され、作業ディレクトリがデフォルトに更新され、ベンダーからのコンテンツがマージされますが、違いがある場合は常に他のオプションを選択する内部マージ ツールを使用して行われるため、後でベンダーのように見えるデフォルトになります。マージ (およびコミット) します。

卑劣な方法は次のとおりです。

hg update -C vendor
hg debugsetparent default
hg commit

debugsetparent作業ディレクトリ内のファイルを実際に更新せずに、更新の「親の変更」部分を実行するパワーツールはどこにありますか。

于 2010-11-01T20:12:51.053 に答える
0

この質問とその回答が提供するコンテキストが欠けていますが、MercurialのWikiで公式の回答を見つけました。

于 2010-11-01T21:30:21.473 に答える