我想找出两个可变版本之间的所有差异。我主要想查看差异的历史(即变更集日志消息),而不是文件中更改内容的内部详细信息。
示例:比较修订版105和106
/---101---103---105
100
---102---104---106
这里,修订版106包括105没有的变更集106104和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
的日志消息。
Hrm,我还没有测试过,但会:
ancestor(X,Y)::X + ancestor(X,Y)::Y
给你同样的清单。我认为它会,而且可能会更快。