我正在使用bisect来查找从上游内核代码修复S4问题的良好提交。 但是当我这样做时,我遇到了一个令人困惑的问题:
git bisect start
git bisect bad v4.8-rc1
git bisect good v4.7
完成结果需要13个步骤。
但是我发现bisect会选择一些早于v4.7标签的提交,这是正常的吗?
在我看来,bisect应该从时间线来判断v4.7标签和v4.8-rc1标签之间的提交。
答案 0 :(得分:0)
在我看来,bisect应该从时间线来判断v4.7标签和v4.8-rc1标签之间的提交。
这不是bisect会做的事情。 bisect将选择标记v4.8-rc1中包含但未包含在标记v4.7中的所有提交。这将是不同的,例如,从v4.6创建一个分支,并在创建v4.7之前将更改提交给它 - 但该分支未合并到v4.7中。特别是在内核开发中,可能会有许多更改在合并之前已经提交了很长时间。这些提交的日期将在v4.7之前,但是它们的更改不包含在v4.7中。
重要的是,bisect以这种方式运行,而不是基于时间,因为它用于查找引入问题的提交。在" good"之前创建的提交也可能发生这种情况。版本但尚未包含在其中。
如果您有提交,可以使用git tag --contains <commit-hash>
检查包含哪些标记。很可能标签v4.7不会成为该列表的一部分,这就是git bisect
选择这些提交的原因。