1

我想找出两个反复无常的修订之间的所有差异。我主要想查看差异的历史记录(即变更集日志消息),而不是文件中更改内容的内部细节。

示例:比较修订版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。合并将大量更改合并到一个变更集中缺少合理的日志信息。特别是,如果我只找到最近的祖先,我会找到101,然后它看起来102并不特别有趣。就实际应用的补丁而言,这些信息是完整的——我不需要查看合并变更集104是如何构建的,只需要查看结果。但是,如果我想知道它为什么包含这些更改,我需要来自102.

4

1 回答 1

0

Hrm,我没有测试过,但会:

ancestor(X,Y)::X + ancestor(X,Y)::Y

给你同样的清单。我认为它会,而且可能会更快。

于 2013-02-11T19:20:16.820 回答