質問

状況: 私はマーキュリアルに慣れています。私は最近セットアップし、モデルでリポジトリの使用を開始しました 私にお勧めします (以下の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
役に立ちましたか?

解決

これに行く方法は2つあります。右のものと便利なもの。私は最初に正しいものをします:

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

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

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

hg update -C vendor
hg debugsetparent default
hg commit

どこ debugsetparent ワーキングディレクトリ内のファイルを実際に更新せずに、更新の「親変更」部分を実行するPowertoolです。

他のヒント

この質問とその答えが提供する文脈はありませんが、私はそれを見つけました MercurialのWikiに関する公式の答え.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top