Mercurial TortoiseHG-如何在分支之间调整更新



考虑到TortoiseHG中有3个分支的项目(">default"、">Phase1"one_answers">>Phase2//strong>"(,是否可以对一个分支进行更改,并使其反映在其他分支中的一个或两个分支中,而不合并它们?

这个想法是纠正一个分支中的错误,而不必"更新"到其他每个分支来纠正那里的相同错误。

如果是,是如何做到的?是同步吗?推还有别的吗?

有人能告诉我实现这一目标的步骤是什么吗(假设可行(?

谢谢Setnara

是的,这是可能的,我至少看到了两个明显的和一个很好的解决方案,但

以后不要使用明显的,尽快解决无脑工作流程!以后从CODE-MONKEYS处理这样的项目简直是噩梦


回扣样式

  • 从错误修复的第一个变更集开始,将变更集(hg help rebase(重新绑定到新的目标(分支负责人(hg rebase -s $BUGFIX_START -d Phase 1+hg rebase -s $BUGFIX_START -d Phase 2(假设错误修复是默认分支的一部分(,将重新绑定的变更集保留在原始分支hg rebase ... --keep
  • 解决可能的冲突
  • 因为rebase将对$BUGFIX_START的所有子代进行rebase,其中可能有一些变更集与错误修复无关,所以hg strip不会对来自rebase目标的变更集进行错误修复

嫁接风格

  • Graft(hg help graft(允许将单个变更集从树的一个部分注入到另一个部分(与rebase相反,rebase从自定义节点或merge注入子树,后者从最伟大的公共祖先注入所有历史(。您必须:
    • 更新到目标分支(hg up Phase 1(,读取hg help update
    • 选择所有需要的变更集并在rebase中枚举(请参阅命令的-r选项(hg graft -r $BUGFIX_START -r $BUGFIX2 ... -r $BUGFIXN -D -U --log
    • 使用阶段2分支执行前两个步骤

最后

"正确的方式"(tm(-命名分支

  • 从$BUGFIX_START hg up $BUGFIX_START的点或父级创建命名分支+更改一些东西+hg branch SEMANTICNAMEOFBUGFIX``hg ci -m "Branch for $BUGFIX"
  • 将与错误修复相关的变更集重新绑定(如果需要,在剥离后使用,在不使用--keep的情况下使用(到这个新命名的分支中
  • 将SEMANTICNAMEOFBUGFIX合并为默认,阶段1,阶段2
  • 以后总是使用"每个任务分支",停止代码和存储库历史中的胡言乱语

我向你的导师表达了一种轻蔑:在授权公开提交之前,他必须告诉并解释这一点(本地个人存储库在任何程度上都可能是一场噩梦(

我强烈建议不仅阅读代码,还阅读明智和经验丰富的用户的文档、建议和提示,以免不断地重新发明

这本身是不可能的。由于可能存在潜在的冲突,合并始终是一个一步到位的过程。它们需要单独处理,一次处理一个。

当然,如果更新很痛苦,那么每个分支上可能已经更新了多个克隆。这样你就可以通过它们来合并新的修复分支。。。

然而,这是一个典型的问题,您的发布过程可以帮助解决。例如,如果default是您的源分支,而Phase1Phase2最终将在default中合并回来,为什么不在所有其他分支中频繁合并default呢?在开发分支中经常发布合并default的策略,这将有助于尽早解决冲突,并且在default中合并后,他们将从偶尔的错误修复中受益。

如果default不是您的源分支,请创建一个只能容纳修复程序的新分支,并经常将该分支合并到阶段分支中,但您已了解要点。

最新更新