3

Say I do my new feature development either in default, or an entirely new branch made just for the feature for a web site project. When it comes time to push the feature out to the live website, I want to move it to the live branch, which I then hg archive to my apache directory.

Throughout everything, I want to be absolutely sure not to push other, unrelated changes that are not yet ready to be published to the live branch.

  1. Is this even a good idea? Or should I be doing something entirely different?

  2. If the code is in default, how do I push only the one thing I need and not everything to live? If I push just the latest changeset, is it smart enough to send the latest version of those files, or will it only do the changesets?

  3. If the code is in an entirely new branch, do I merge the whole branch into live? How do I get those changes back to my default branch so I see them there too?

  4. I was reading the "Task Based Management" section of the Mercurial Kick Start guide and it mentions merging default into your branch. I found this very confusing and was wondering why you'd ever do this.

Thanks for any help you guys can provide.

[edit] I'm using TortoiseHG BTW [/edit]

4

1 回答 1

3

HG 现在有Phases。将变更集的一个阶段更改为秘密,当您使用推送时,它不会被推送。您可以使用 TortoiseHG GUI 来完成。

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

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

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

于 2012-07-13T18:39:05.367 回答