2012-03-29 35 views
0

我正在写一个脚本,执行二进制搜索来指定破损测试的责任。我正在使用git rev-list --bisect如何让git rev-list --bisect跳过特定的提交?

我想排除构建被破坏的具体提交。 git bisect有一个选项可以做到这一点,git bisect skip BROKENCOMMIT。但是,我找不到使用git rev-list --bisect做同样事情的等效方法。有一个吗?

谢谢!

+0

git rev-list提供了基于作者,提交者,日期和描述排除提交的选项。为什么哦为什么它没有一个选项来排除基于散列的提交? – dnw 2012-03-30 14:54:42

+0

我结束了刚刚运行git rev-list,获取提交的完整列表,然后手动执行所有其他操作。 – dnw 2012-03-31 02:11:37

回答

0

不幸的是,没有办法告诉git rev-list --bisect跳过某些提交。

git bisect通过创建名为refs/bisect/skip-*的引用实现跳过。好的和坏的承诺存储在refs/bisect/badrefs/bisect/good-*。该git rev-list --bisect命令看起来refs/bisect/badrefs/bisect/good-*,但由于某种神秘原因不注意refs/bisect/skip-*。这似乎是Git邮件列表的一个好建议。

相反的rev-list --bisect,你可以使用git bisect start --no-checkout,使用git bisect skip添加要跳过的提交,然后使用BISECT_HEAD参考。这种方法的一个缺点是git bisect不允许你指定参考名称空间,所以如果有一个现有的平分正在进行,你会覆盖它。