标签: bisect

我如何使用git bisect查找第一个GOOD提交?

我有以下问题:

  • 该版本master工作正常
  • 之前的最后一个标签的版本master(比如说last)有一个bug
  • 一位同事需要一个补丁来last修改那个特定的错误

好的.让我们的朋友git bisect去修复修复bug的修改:

git bisect start
git bisect bad last
git bisect good master
Run Code Online (Sandbox Code Playgroud)

但这不会起作用:

一些好的转速不是坏转的祖先.
在这种情况下,git bisect无法正常工作.
也许你错了好转和坏转?

有什么提示可以克服这个问题?我在文档中遗漏了什么吗?

git bisect

84
推荐指数
5
解决办法
8320
查看次数

我如何停止git bisect?

我前一段时间尝试过git bisect,这对我很有帮助,但显然我没有阻止它.当我做git状态时,我仍然得到:

You are currently bisecting.
(use "git bisect reset" to get back to the original branch)
Run Code Online (Sandbox Code Playgroud)

我真的不想重置到任何地方,我只是想停止二等分.这真的只是摆脱这个消息的问题.

git bisect

63
推荐指数
2
解决办法
1万
查看次数

如何使用bisect.insort_left键?

Doc's缺乏一个例子......你如何使用bisect.insort_left)_基于密钥?

试图基于密钥插入.

bisect.insort_left(data, ('brown', 7))
Run Code Online (Sandbox Code Playgroud)

把插入放在data[0].

来自docs ...

bisect.insort_left(A,X,LO = 0,HI = LEN(a)中)

    插入X一个按排序顺序.这相当于a.insert(bisect.bisect_left(a, x, lo, hi), x)假设a已经排序.请记住,O(log n)搜索由缓慢的O(n)插入步骤控制.

样品用法:

>>> data = [('red', 5), ('blue', 1), ('yellow', 8), ('black', 0)]
>>> data.sort(key=lambda r: r[1])
>>> keys = [r[1] for r in data]         # precomputed list of keys
>>> data[bisect_left(keys, 0)]
('black', 0)
>>> data[bisect_left(keys, 1)]
('blue', 1)
>>> data[bisect_left(keys, 5)]
('red', 5)
>>> data[bisect_left(keys, 8)] …
Run Code Online (Sandbox Code Playgroud)

python bisect

30
推荐指数
5
解决办法
1万
查看次数

在git bisect运行期间运行两个命令

我本来想做的git bisect run 'bundle && bundle exec cucumber'.

我想在命令行上执行此操作 - 我不想编写shell脚本.

git bisect

27
推荐指数
1
解决办法
1148
查看次数

Mercurial bisect的优点是什么?

我一直在阅读hg bisect和有趣的是能够知道哪个版本引入了一个错误,但我想知道人们使用这些信息的原因.我唯一能想到的是尝试缩小哪些日期可能需要数据修复,如果它是导致某种形式的无效数据的错误.

更新: 我想在发布之前我完全误解了目的.我在想我会进行调试,找到引入错误的行,然后使用bisect.似乎bisect是一种方式让我不必花时间猜测bug可能在哪里并放置断点或记录.相反,我应该编写一个现在失败的小测试,传入过去的修订版并让二等分告诉我问题的来源.

version-control mercurial dvcs bisect

25
推荐指数
2
解决办法
5169
查看次数

在Mercurial存储库中查找文本的第一次出现

我有一个包含大约800个变更集的Mercurial存储库,我需要找到第一个变量集,其中出现了单词Example.该单词出现在.php文件中,而不是在提交注释等.

什么是最快/最简单的方法呢?

mercurial grep bisect

19
推荐指数
2
解决办法
5262
查看次数

Java相当于python中的bisect

Java的bisect模块中是否有Java的等价物?使用Python的bisect,您可以使用方向进行数组二分.例如bisect.bisect_left:

找到列表中项目的正确插入点以维护排序顺序.参数lo和hi可用于指定应考虑的列表的子集; 默认情况下,使用整个列表.

我知道我也可以通过二进制搜索手动执行此操作,但我想知道是否已有一个库或集合执行此操作.

python java bisect

12
推荐指数
2
解决办法
3536
查看次数

如何从mercurial获得bisect的当前状态(好/坏修订的历史)

当我在日食中做一个hg bisect时,我喜欢我能看到过去曾经标记过的所有坏东西和商品.
有没有办法在命令行获取该信息?

mercurial bisect

10
推荐指数
2
解决办法
598
查看次数

什么git提交练习更好?

我真的相信在一个问题上有一个提交是一个好习惯.我确定我在"最佳实践"这样的文章中的某处读过它.

因此,我的工作流程如下:

  • 对于一个新问题,我创建了一个新的本地分支git checkout -b new-issue.
  • 将所有更改提交到其中.有时这涉及很多提交.
  • 完成后,我squash提交并将rebase它们转换为当前的主题分支.
  • 如果出现问题,我可以git revert提交,找到错误,修复它,并将新补丁提交到专题分支.我不会更改远程存储库的历史记录.

但今天,我听到以下工作流程后感到很惊讶:

  • 为新问题创建新分支.
  • 承诺一切.
  • 使用merge --no-ff合并与专题分支问题分支(所以我们必须"合并提交",我们可以revert).
  • 如果出现问题,我们可以git bisect用来查找错误.

根据第一种方法,我们将有一个干净的git历史,并且不知道在开发过程中使用的开销分支.

根据第二种方法,我们将有一个非常混乱的历史,有很多丑陋,不必要的合并和承诺只有一个问题.但是,我们可以git bisect用来查找错误.(也许这对于重构更好?)


  • 您对这两种方法有什么利弊?

  • 你使用哪种方法,为什么?

  • 在实践中,你真的习惯git bisect了找虫子吗?(我还没......)

git merge commit rebase bisect

9
推荐指数
2
解决办法
1096
查看次数

是否可以在 git 标签上使用 git bisect

我喜欢使用git bisect尤其是用于解决回归错误。然而,我意识到它也可能过于细化:它指出了确切的提交消息,如果我只是想知道某个错误在哪个版本中发生了怎么办(我的意思是一个 git 标签)?

以上不需要相互排斥,我可以先找出导致错误的标签,然后简单地在该标签上重新运行另一个 git bisect。

git bisect

8
推荐指数
1
解决办法
553
查看次数

标签 统计

bisect ×10

git ×5

mercurial ×3

python ×2

commit ×1

dvcs ×1

grep ×1

java ×1

merge ×1

rebase ×1

version-control ×1