このページは Merge の日本語訳です。

マージ

hg merge

mergerepository 内のチェンジセット2つを、 merge changeset (マージ状態を表現しています) へ統合します。 マージは、複数 branch の2点(たいていは現行の head 2つ)を1つにつなぎ合わせる処理です。

マージ処理は単純です。 tipworking directory とマージしたいことがよくあるでしょう。

そこで、 hg merge を実行すると、 Mercurial が tip での変更点をローカルの変更点へ取り込みます。 tip は作業ディレクトリの2番目の親リビジョンになります。

マージ処理の第1ステップは、チェンジセットの履歴を辿ってマージ予定のバージョン2つの 「共通の祖先」 (rev 1) を探すことです。 この処理はリポジトリ全体でファイルごとに行われます。

両方のチェンジセットで変更されているファイルに対しては、リモートでなされた変更をローカルの変更に追加するために merge program を使って3ウェイマージを試みます。 その変更内容に conflict があれば、それを解決するようユーザーに促します。

マージが完了し、作業ディレクトリ上のマージ結果が正しいと納得できたのであれば、 最後に変更点を commit する必要があります。 これで新しいマージチェンジセット(例の rev 4)が作成され、作業ディレクトリで行ったマージ結果が確定します。

Mercurial ではマージ結果をコミットするまで、次のマージを行うことはできません。 以降のマージで必要となり得る重要な履歴を失う可能性があるためです。

例によって、新しく作成したチェンジセットが作業ディレクトリの親になります。 ここでは元通り、親は1つ(parent 1)になっています。

ヘルプ: http://www.selenic.com/mercurial/hg.1.html#merge

参考: TutorialMerge, ResolveConflict


CategoryJapanese