如何获得 git 平分的当前 "status"?
How do I get the current "status" of a git bisect?
我正在对 oh-my-git 进行一些个人修改(在终端上显示 git 状态)并且我想显示当前平分的 "status" .具体来说,我想获得剩余提交的数量和最后一个 bisect 命令的结果的近似步骤数,例如:
Bisecting: 9 revisions left to test after this (roughly 3 steps)
似乎只有通过实际执行git bisect good
或git bisect bad
才能获得这些信息。但是,我不想通过 运行 这些命令中的任何一个来更改 repo 的状态 - 我只想获取当前的二等分状态。
基于极其有限的测试的完全天真的答案:
可以用 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,四舍五入。要获得 "Roughly 3 left to test",我们只需取 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 应用到零,如果可能的话。
我正在对 oh-my-git 进行一些个人修改(在终端上显示 git 状态)并且我想显示当前平分的 "status" .具体来说,我想获得剩余提交的数量和最后一个 bisect 命令的结果的近似步骤数,例如:
Bisecting: 9 revisions left to test after this (roughly 3 steps)
似乎只有通过实际执行git bisect good
或git bisect bad
才能获得这些信息。但是,我不想通过 运行 这些命令中的任何一个来更改 repo 的状态 - 我只想获取当前的二等分状态。
基于极其有限的测试的完全天真的答案:
可以用 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,四舍五入。要获得 "Roughly 3 left to test",我们只需取 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 应用到零,如果可能的话。