【问题标题】:git-bisect but for N reposgit-bisect 但对于 N 个 repos
【发布时间】:2018-01-09 13:00:50
【问题描述】:

我的代码中有一个错误,由于测试失败,可以很容易地重现该错误。

到目前为止,我在这种情况下使用了 git-bisect,但它只有在只有一个 git repo 时才有用。

就我而言,有 7 个。

有没有办法做类似 git-bisect 的事情,但对于 N 个 git 存储库?

更新

有一个“容器”回购,主要包含配置。它与特定客户有关。

那么核心应用程序就有一个 repo。

那么这个核心应用程序的插件的 N 个仓库在哪里。

在此上下文中不使用 Git 子模块。

更新2

到目前为止,我还没有使用google repo tool。 AFAIK 它也不能一分为二。

【问题讨论】:

  • 7 个存储库?这有什么原因吗?他们没有共同点吗?你不能做一个第 8 个,然后把所有其他 7 个都拉进去,结合历史,然后你可以在那里运行 bisect 吗?
  • 这七个仓库有什么关系?是其他的一些子模块或子树吗?有一些图书馆吗?是什么阻止您确定包含错误的存储库?
  • 我更新了问题并解释了为什么有几个 git repos。
  • 假设其他 repos 是子模块,您可以轻松地在每个 git bisect 之后运行 git submodule update,如果需要,甚至可以编写脚本。
  • 您自己将日期一分为二,并在每个 repo 中使用 git log --before--after 来查找您正在测试的时间戳的匹配提交。签出所有 repos 中的相应提交并检查它们。然后搜索下一个日期并再次测试,就像 git bisect 对单个 repo 所做的那样。

标签: git git-bisect


【解决方案1】:
  1. 首先:找到测试通过时的状态。

  2. 然后:在还原 7 个存储库中的一个时检查测试是否通过

例如,假设:

  • 在提交存储库时通过了测试:

    A1 A2 A3 A4 A5 A6 A7
    
  • 当所有存储库都位于其新 HEAD 时,测试未通过:

    B1 B2 B3 B4 B5 B6 B7
    

尝试在以下配置中测试是否通过:

A1 B2 B3 B4 B5 B6 B7   
B1 A2 B3 B4 B5 B6 B7   
B1 B2 A3 B4 B5 B6 B7   
etc ...

如果您设法以这种方式隔离单个存储库:您只需将其一分为二。

【讨论】:

  • 如果不能减少到单个repo,请添加评论
  • A1 B2 B3 B4 B5 B6 B7 等将不起作用,因为它根本无法再编译。
  • @javagirl : 如果插件系统对于 7 个 repos 的所有版本都有相同的接口,它仍然会编译。
猜你喜欢
  • 2017-04-24
  • 2020-07-26
  • 1970-01-01
  • 1970-01-01
  • 2022-06-29
  • 2017-06-08
  • 2015-06-23
  • 2020-10-09
相关资源
最近更新 更多