Mercurial回滚和重建

时间:2014-04-30 01:09:44

标签: mercurial

我们有2个mercurial命名分支,开发和测试。对于应该合并到测试中的开发有很多变化。有时,更改会合并,然后回滚。然后可能在错误的方向上尝试合并。结果是我们现在有2个分支,最近有一个共同的父母。而且我们仍然有未经测试的开发变更。但由于我们所犯的错误和共同的父母,将开发合并到测试中没有任何作用,即它不应用任何变化。

如果我愿意接受几周的测试,我是否可以像这样切换到测试分支:

hg update <last good test revision>

然后'从本地'移植到本地'我们想要移动测试的十几个更改,然后合并开发以重置普通父级进行测试?

这是一个疯狂的计划还是有更简单的方法?

2 个答案:

答案 0 :(得分:1)

如果只有十几个更改,您确实可以update to good test rev开始新的和graft to local您需要重新创建完美分支的提交。

只有当您对新的banch头感到满意时,使用this trick合并两个头并忽略坏test头。你需要在你的分支上有一个头。

现在您处于test将保留development分支的所有更改的状态。我建议您再次使用相同的技巧合并development,以便为您需要的test制作公共父级,但不会在development中发生任何污染。如果它不起作用,只需在development上创建一个虚拟变更集,然后再次重试该技巧(如果有意义的话)。

但是,最后,您似乎并不太担心development分支被test分支污染。这个方向可以吗?

答案 1 :(得分:1)

  

这是一个疯狂的计划还是有更简单的方法?

是的,是的。

是短脑动力(而非驴动力)平原

平原A

  • 将脏的存储库克隆成新的,没有愚蠢,愚蠢,无脑的变更集(hg clone -r LAST_GOOD_CSET
  • 用抛光
  • 替换脏回购

平原B

  • 将脏存储库克隆为新(可选)
  • 存储库启用strip || histedit扩展程序(您要清理它)
  • 仔细阅读与扩展相关的文档,以便使用大脑的命令和工作流程,而不是盲目地
  • 从存储库中删除错误的变更集
  • 用抛光
  • 替换(如果p.1完成)脏回购