0

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

4

1 回答 1

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 以这种方式运行,而不是基于时间,因为它用于查找引入问题的提交。这也可能发生在“好”版本之前创建但尚未包含在其中的提交中。

如果您有一个提交,您可以使用git tag --contains <commit-hash>. 很可能标签 v4.7 不会成为该列表的一部分,这就是为什么选择这些提交的解释git bisect

于 2016-08-29T10:20:15.800 回答