git - 如何获取 git bisect 的当前 "status"?

标签 git git-bisect

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

二分法:此后还有 9 个修订版需要测试(大约 3 个步骤)

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

最佳答案

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

可以使用 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 个要测试”,我们只需取 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 应用为零(如果可能的话)。

关于git - 如何获取 git bisect 的当前 "status"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37667324/

相关文章:

带有*无趣*路径列表的 git bisect

svn - 用颠覆进行二等分的最佳方法是什么?

git bisect 不起作用,没有输出

Git 将 merge 的提交一分为二

c - 我如何在 git 中运行命令 emerge?

git - 在命令上设置 git 默认标志

git - 删除推送到远程分支的 git commit

git - rebase 出错后删除其他人在我的分支上的提交

git - 我需要手动获取 ~/.bashrc 以在我的命令提示符中显示和更新 GIT 分支

git - 你如何让 git bisect 忽略 merge 的分支?