0

在 git bisect 期间,如果被二等分的提交是一组感兴趣的提交的成员,我想采取特定的行动。具体来说,考虑这种情况:

----------C-------- A
      \---B---/

B 和 C 都可以从 A 到达,但不能从彼此到达。在 bisect 期间,我想对 B 可以访问的提交应用一个补丁,因为 B 引入了一个不相关的错误,我想过滤掉那个噪音。检查 C 时不应应用补丁。

一般来说,测试提交 C 是否在从提交 A 开始可以访问 B 的提交集中的最佳方法是什么?理想情况下,这将是我可以传递给 git rev-list 的表达式,但我怀疑它需要的不止于此。

4

1 回答 1

0

测试提交$QA(可疑祖先)是否实际上是提交的祖先$PC(可能的孩子):

git merge-base --is-ancester $QA $PC

$QA如果实际上是 的祖先,则运行此命令的退出代码结果为 0(真) ,如果不是 的祖先,$PC则为非零(假)。(如果两个提交相同,则退出代码为 0:一个提交被认为是它自己的祖先。为了区分这种情况,只需将两个提交标识符解析为哈希并测试哈希是否相等。如果标识符是已经散列,只需使用或类似,否则用于进行散列的翻译。)$QA$PCif [ $QA = $PC ]git rev-parse

在 期间git bisect$PC对 test 的提交只是HEAD,并且您必须进行两次测试(针对BC)。

于 2016-08-17T23:43:50.813 回答