1

2 つの Mercurial リビジョン間の違いをすべて見つけたいと思います。私は主に、ファイル内で変更された内部の詳細ではなく、相違点の履歴(つまり、変更セットのログ メッセージ) を確認したいと考えています。

例: リビジョン105106を比較する

   /---101---103---105 
100         \
   \---102---104---106

ここで、リビジョン 106 には、105 にはない変更セット 106、104、および 102 が含まれており、105 には、106 にはない変更セット 103 および 105 が含まれています。このリストを簡単に取得するにはどうすればよいですか。理想的には、グラフトも考慮に入れますか?

次のリビジョン セット クエリはほとんど機能します。

(ancestors(105) - ancestors(106)) + (ancestors(106) - ancestors(105))

しかし、これはかなり一般的な質問のように思われるものに対するかなり長いクエリです:なぜこのブランチは私のローカル バージョンと正確に異なるのでしょうか? また、移植を考慮に入れておらず、残念ながらマージなどの興味のない変更セットが含まれていると思います。

git同等のものを含めるためのボーナスポイント。

編集: これが必要な理由は、これらのバージョンの違いを人間に説明するためです。私は複雑なソース ツリーを持っており、バージョン X には機能 A と B とバグ修正 P が含まれているが、バージョン Y には機能 C と D とバグ修正 Q が含まれており、それ以外は同じであることを人々に伝える必要があります。 .

私の例に戻ると、マージ自体は興味深いものではありません (上の例で104は興味深いものではありません) が、マージを構成する変更セットは非常に興味深いものです。つまり、101 と 102 です。マージは、多くの変更を 1 つの変更セットに結合します。合理的なログ情報が不足しています。特に、最も近い祖先を見つけるだけなら、 が見つかりますが、特に関心がない101ように見えます。102実際に適用されたパッチに関しては、この情報は完全です。マージ変更セットがどのよう104に構築されたかを確認する必要はありません。結果だけを確認する必要があります。ただし、これらの変更が含まれている理由を知りたい場合は、 からのログ メッセージが必要102です。

4

1 に答える 1