HG:如何将一些(但不是全部)变更推向'稳定'分支?

时间:2012-07-13 14:31:12

标签: mercurial tortoisehg

假设我在默认中进行新的功能开发,或者是为网站项目的功能而创建的全新分支。当要将该功能推送到实时网站时,我想将其移至 live 分支,然后我hg archive到我的apache目录。

在整个过程中,我希望绝对不要将尚未准备发布的其他无关更改推送到实时分支。

  1. 这是个好主意吗?或者我应该做一些完全不同的事情?

  2. 如果代码是默认,我如何只推送我需要的一件而不是生活的所有内容?如果我只推送最新的变更集,它是否足够智能发送这些文件的最新版本,还是只会进行变更集?

  3. 如果代码在一个全新的分支中,我是否将整个分支合并到实时?如何将这些更改恢复到默认分支,以便在那里看到它们?

  4. 我正在阅读Mercurial Kick Start指南中的“基于任务的管理”部分,它提到将默认合并到您的分支中。我发现这很令人困惑,并且想知道为什么你会这样做。

  5. 感谢您提供任何帮助。

    [编辑] 我正在使用TortoiseHG BTW [/编辑]

1 个答案:

答案 0 :(得分:3)

HG现在有Phases。将变更集的阶段更改为机密,并且在使用push时不会将其推送。你可以使用TortoiseHG GUI来做到这一点。

除此之外,请注意只需推送或拉动某些内容不会自动更改工作目录中的任何文件。它只提供一些额外的变更集。只有使用更新才能实际更改工作目录中的任何文件。 (除非您将hg配置为自动更新)。

在您链接的示例中,默认分支中存在错误修复。 Bob也希望在他的分支中有这个修复,所以他将默认分支与他的分支合并。这只是一个看分支如何工作的例子。您不必以完全相同的方式使用它。如果你刚刚开始你的Mercurial冒险,那么你最好只使用一个分支,直到你有充分的理由使用更多。

例如:3个开发人员在同一个项目上工作,所有人只使用一个分支(默认)。其中一个开发人员希望对代码进行重大的重构。他想提交几个非常不稳定的变更集(许多“在工作中”)。在默认分支中这样做可能会扰乱其他开发人员。这是创建分支的一个很好的理由。在他的版本足够稳定后,他会将他的分支合并为默认。当他在他的分支中进行开发时,他希望与其他开发人员保持同步,因此他经常将默认值合并到他的分支中。长时间呆在单独的分支中可能会导致难以合并。幸运的是,在HG中合并非常快,所以经常合并。