【问题标题】:Bisecting over gitflow style git repository with broken intermidiate commits将 gitflow 风格的 git 存储库与中断的中间提交一分为二
【发布时间】:2017-07-15 22:31:23
【问题描述】:

在 gitflow 模型的feature 分支中编译失败或以其他方式破坏的中间提交是正常的。

只有在合并到应用审查和自动测试的develop 分支时才能保持稳定。

git 可以在develop 分支上一分为二而不会从功能分支中遇到损坏的中间提交吗?

我不喜欢调整我的 bisect 测试脚本来跳过/解决功能开发中损坏的提交...

我考虑解决问题的一种方法是告诉 Git 以某种方式只遍历合并变更集...

【问题讨论】:

    标签: git git-bisect


    【解决方案1】:

    考虑到git bisect pick the next commit to examine 的方式(通过 PRNG -- 伪随机数生成器),您可以考虑制作一个包装器。

    那个包装器会:

    • 致电git bisect
    • 对于每个提交,它会仔细检查提交是否有多个父项
    • 如果没有,它会调用git bisect skip

    这样,您的 bisect 测试脚本保持不变。

    David Ness 在“How do you get git bisect to ignore merged branches?”中描述了一种解决方法。

    我写了一个Python script to help do this on GitHub
    如果您运行此脚本,它将尝试向后跟踪并跟踪您的分支并发出提交 id 列表,这些提交 id 是合并到您的分支中的分支的提示。
    使用此列表,您可以将这些提供给“git bisect good”,然后 bisect 将从您的对分中省略合并分支上的所有提交,从而达到预期的结果。

    这可能不完全是你的情况,但想法仍然存在:计算你不想要的提交列表,并将它们提供给 git bisect good

    【讨论】:

    • 是否可以告诉git bisect 在 DAG 中只使用 left 子级?我们可以在审查/集成服务器中强制执行合并提交的方向。
    • @gavenkoa 直到 Git 2.4:见我对stackoverflow.com/a/5639046/6309的评论
    • @gavenkoa 我刚才提到的链接问题包括我在回答中引用的可能解决方法。
    • 使用 Mercurial 可以提供修订集以跳过 hg bisect --skip 'not tagged()'。命名分支后,您可以将搜索空间限制为特定分支:hg bisect --skip 'not branch(develop)'
    猜你喜欢
    • 2015-03-07
    • 2018-09-26
    • 2015-09-14
    • 1970-01-01
    • 2011-02-02
    • 2011-12-10
    • 1970-01-01
    • 2011-06-05
    • 2020-09-06
    相关资源
    最近更新 更多