怎么做bisect从upsteam linux内核中找到一个好的提交?

时间:2016-08-29 01:44:42

标签: git bisect

我正在使用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标签之间的提交。

1 个答案:

答案 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选择这些提交的原因。