あるブランチが別のブランチから分岐して以降の変更差分を報告します (vc-diff-mergebase)。
別のブランチから分岐して以降のブランチにおけるリビジョンのログメッセージを表示します。(vc-log-mergebase)。
2つのブランチのマージベースとは、両方のブランチに存在する最新のリビジョンのことです。いずれのブランチも他方にマージされたことがない場合(ブランチのマージを参照)、マージベースは、新しいブランチが作成された時点で、古い方のブランチが置かれていたリビジョンとなります(新しいブランチの作成を参照)。いずれか一方のブランチが他方にマージされたことがある場合、マージベースは最新のマージポイントとなります。
本節で説明するコマンドは、現在のところ分散型バージョン管理システムに対してのみ実装されています(分散型リポジトリと集中型リポジトリを参照)。
マージベースは、ブランチ間で特定の比較を行う際に有用であり、Emacsではそのためのコマンドが2つ用意されています。C-x v M D (vc-diff-mergebase) と
C-x v M L (vc-log-mergebase)
はそれぞれ、2つのブランチを指定してマージベースを特定し、そのマージベースを2つ目のブランチと比較します。これらのコマンドは、それぞれ差分の報告と変更履歴の表示を行います。
これらのコマンドの典型的なユースケースは、いずれかのブランチがもともともう一方から作成されており、あなたや共同作業者が少なくとも一度、一方のブランチをもう一方にマージしたことがある場合です。その場合、これらのコマンドを使って、一方のブランチにあるどの変更がまだもう一方にマージされていないかを確認できます。
関心のある変更が含まれているブランチを「ソースブランチ」、それらの変更がまだマージされていないブランチを「ターゲットブランチ」と呼びます。「古いリビジョン」の入力を求められた際はターゲットブランチを、「新しいリビジョン」の入力を求められた際はソースブランチを指定してください。20 すると、C-x v M D にはソースブランチをマージした場合にターゲットブランチで何が変わるかのプレビューが表示され、C-x v M L にはターゲットブランチにまだマージされていないソースブランチの変更履歴が表示されます。
マージベースの概念は、ブランチから任意の2つのリビジョンへと一般化されます。2つのリビジョンのマージベースとは、両リビジョンのリビジョン履歴の中で見つかる最新のリビジョンのことです。C-x v M D と C-x v M L は、ブランチに限らず、任意の2つのリビジョンを指定できます。2つのブランチを比較することは、それらのブランチの末端にあるリビジョンを比較することと同じです。
(実際には、この概念は任意の回数のリビジョンに一般化できますが、Emacsのマージベース用コマンドは2つまでしか対応していないため、ここではそれに限定します。)