内核:bisect merge 提交以查找 non-merge first bad

kernel: bisect merge commits to find non-merge first bad

我将内核中的问题一分为二,第一个错误提交合并提交:

Parents of 2b90506a8186(都是good):

另外v5.12-rc2

我需要做第二个平分来找到实际的第一个 non-merge 错误提交(即 028a1e968435..2b90506a8186 - 4885 commits or 01d713689441..2b90506a8186 - 46 次提交之一)。

我记得以前在类似的情况下我检出到 parent 之一(第一个分支)并应用 one-by-one 来自另一个 parent (第二个分支)的所有提交第一个分支的顶部。有了这个特殊的分支,我需要解决一些冲突,因为历史是线性的,所以我可以变基。

但我不记得我是如何从另一个 parent 那里得到提交列表的。 它可能非常简单,用 git log --first-parent.

创建它 parent

但对于这种情况,我无法生成列表,可能是因为 parents 也是合并提交。

我尝试阅读各种资料,但没有成功:

更新 我不相信所有设备都有内核回归,只是我的特定 arm64 设备的设备树有问题。找到有问题的提交可以帮助我暂时恢复有问题的提交,直到我在我的设备的设备树中找到需要修复的内容。

Parents of 2b90506a8186 (both are good): […] I need to do second bisect to find actual first non-merge bad commit

您知道合并 2b90506^2 会产生一个无法在您的装备上启动的内核,因此该提交具有会在集成中显示的错误:这很糟糕。

git bisect 2b90506^2 $(git merge-base 2b90506^1 2b90506^2)

并且在测试时,首先合并到 2b90506^1 以检查提交是否会失败集成测试,因为那是你真正的“坏”条件。