繁体   English   中英

如何获取 git bisect 的当前“状态”?

[英]How do I get the current “status” of a git bisect?

我正在对 oh-my-git(在终端上显示 git 状态)进行一些个人修改,我想显示当前二等分的“状态”。 具体来说,我想获得作为最后一个 bisect 命令结果的剩余提交次数和大致步骤数,例如:

Bisecting: 9 revisions left to test after this (roughly 3 steps)

似乎获取此信息的唯一方法是实际执行git bisect goodgit bisect bad 但是,我不想通过运行这些命令中的任何一个来更改 repo 的状态 - 我只想获取当前的二等分状态。

基于极其有限的测试的完全天真的答案:

可以使用git bisect visualize获得要探测的提交范围,这可以用git bisect visualize | wc -l粗略计算git bisect visualize | wc -l 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 个要测试”,我们只取以 10 为基数的 2 对数,向下取整。

用我最喜欢的脚本语言(替代你的)​​:

$ 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 应用于零(如果可能发生)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM