0

我正在学习git bisect

让我们猜测以下线性 git 历史:

* A commit-1     # HEAD
* B commit-2
* C commit-3
* D commit-4     # First bad commit
* E commit-5
* F commit-6
* G commit-7
* H commit-8     # Is good

然后,我开始二分:

git bisect start
git bisect bad HEAD      # A commit-1
git bisect good H        # H commit-8

我有一个运行一些测试的脚本,如果我手动运行测试并将每个提交标记为badgood,它遵循以下步骤:

E commit-5     # OK
C commit-3     # FAIL
D commit-4     # FAIL

因此,它完成D commit-4了第一个错误提交,这是正确的


但是,如果我使用git bisect run ../outside/test.sh它会执行以下操作:

E commit-5     # OK
C commit-3     # FAIL
B commit-2     # FAIL
A commit-1     # FAIL

说这A commit-1是第一个错误的提交,这是错误的

所以,如果我理解这里的二进制搜索,一次C commit-3是坏的,第一个错误的提交应该是它自己或者在下面。

我在这里缺少什么?为什么他们会有不同的行为?看起来git bisect run正在运行不同的算法。

我的 git 版本是:2.19.0

谢谢

4

1 回答 1

1

刚刚发现问题:

我的脚本是:

#!/bin/bash

npm test
echo "STATUS: $?"

exit $?

因此,当npm start返回语句时1echo将最新的退出代码更改为0我在exit.

感谢您指出script.

于 2020-04-13T23:07:02.863 回答