我正在对oh-my-git进行一些个人修改(在终端上显示git状态),我想显示"状态"当前的二等分。具体来说,我想获得剩余提交的数量和最后一个bisect命令的大致步骤数,例如:
Bisecting: 9 revisions left to test after this (roughly 3 steps)
似乎获取此信息的唯一方法是实际执行git bisect good
或git bisect bad
。但是,我不想通过运行这些命令来改变repo的状态 - 我只想获得当前的bisect状态。
答案 0 :(得分:5)
基于非常有限的测试完全天真的答案:
可以使用git bisect visualize
获取留给探测的提交范围,这可以使用git bisect visualize | wc -l
或您拥有的内容进行粗略计算。
在进入此状态之前打印的消息似乎大致基于此数量的一半,并取了该半数的基数2日志。
例如,我现在处于这样一种状态,我被告知:
Bisecting: 10 revisions left to test after this (roughly 3 steps)
在这种状态下,我有:
$ git bisect visualize --oneline | wc -l
21
即。 " 10修订"实际上意味着在可疑范围内有21个提交。我们处于该范围的中间位置,因此大约10个位于任一方向。为了获得10,我们计算21/2,向下舍入。为了得到"大约剩下3来测试",我们只需将基数为2的对数值10,向下舍入。
用我最喜欢的脚本语言(替换你的):
$ txr -P '(let* ((count (length
(get-lines
(open-command "git bisect visualize --oneline"))))
(left (trunc count 2)))
`Bisecting: @left revisions left to test after this \
\ (roughly @(int-flo (log2 left)) steps)`)'
Bisecting: 10 revisions left to test after this (roughly 3 steps)
需要进行一些错误处理,因为如果您没有报告至少一个好的和一个错误的提交,bisect
命令会抱怨。还有一些极端情况,例如,如果可以发生,则将log2应用于零。