2010-11-09 52 views
10

我正在使用mercurial进行源代码管理。我想要一个主开发分支,然后有与“v1.0”“v1.01”和“v2.0”一致的时间点,以便在任何时候我都可以说出“v2.0 “并粉碎它上面的一些错误。我听说有人说我需要标签,有人说我需要书签,有人说我需要命名分支,还有人说我只需要维护多个克隆的存储库。Mercurial Release Management

从我的角度来看,多克隆回购似乎是一个糟糕的选择,因为我喜欢DVCS的一件事是,一旦你克隆了“回购”,你就拥有了所有过去的历史,并且可以完全从某些笔记本电脑恢复,如果你的中央服务器烧毁。如果您的回购分散到各地,我觉得您会失去这种好处,除非您希望人们克隆5回购并将其维护在本地计算机上。这关系到我,因为大多数人都认为这是一个很好的方法,但它在逻辑上对我没有意义。 (我知道这不是一个正确的备份方式,但没有完全访问回购的一部分而不回到服务器对我来说似乎很奇怪)

所以对我来说,把所有东西放在一起的方法必须可以是标签,命名分支或书签。但是,我似乎无法区分这些。人们倾向于将书签解释为“有点像标签,有一些注意事项”,并将分支命名为某种移动标签,这可能比克隆更好。

我真的很喜欢git风格的分支(单个回购,多个分支),但是,我不想诉诸怪异的插件或黑客使它看起来像git。我想了解适当的mercurial方式。

奖励:“小规模”分支如何适应混合,即您想在自己的分支中使用小功能?

回答

0

像Mercurial或Git这样的DVCS可以很容易地克隆回购。这并不意味着您将其用于您的发布管理工作流程。

每个人都有完整的mercurial repo只是DVCS的副作用。这意味着当主存储库有些丢失时会有冗余。

您可以使用DVCS,使您可以拥有一个主存储库,您可以在其中推送更改并从中提取更改,就像客户端服务器VCS(subversion)一样,具有可脱机工作的额外优势。

为您发布管理工作流程,你还是应该看看

  1. 书签,标签和分支。

关于每个主题都有足够的讨论。

下面提供与克隆,书签,并命名为分支

2

命名分公司分支良好的简要信息 - 在每次提交你做有一个该提交所针对的分支的字段。除此之外,在具有命名分支的回购和具有多个头的回购之间没有区别。合并命名分支时,它就像常规合并一样,分支名称将从当前活动分支中提取。对于长期的v1.x分支来说,这更可能是你想要的。

书签 - 浮动标签非常像提示在您的存储库中。仅限本地,除非您进行某种边带同步。很适合做功能分支,或者需要跟踪正在发生的事情,但不需要与他人分享。

标签 - 如果你需要确切地知道在V1.0

我会用树枝名称为发展1.x的分支2.x的分支等,然后使用标签发布的一份名为提交好为1.0版本标记实际发布的内容,1.1将在1.x树上完成,然后1.1版本将成为其中的内容标签。我不会让书签成为流程的一部分,因为您必须手动同步它们(注意在更新版本的mercurial书签中可以远程同步,尽管它仍然需要用户干预。)

2

我从来没有理解过克隆回购作为匿名分支机构。

hg branch feature-name是我喜欢如何滚动。

0

我正在使用mercurial进行源代码管理。我想要一个主开发分支,然后有与“v1.0”“v1.01”和“v2.0”一致的时间点,以便在任何时候我都可以说出“v2.0 “并粉碎它上面的一些错误。

我建议您为每个发行版本添加标签。

如果您需要发布针对以前版本的错误修复,您应首先创建命名分支或基于版本标记克隆新存储库。一旦你处理了这个错误,你会将这个错误修复合并回你的主要开发分支。

因为结果是相同的,所以使用命名分支或克隆确实无关紧要:错误已修复,修复程序已发布到以前的版本,修复程序已并入主开发分支。阅读other answers,给两种方法一个尝试,并使用你喜欢的。就我个人而言,我使用命名分支来存放这些长期存在的发行版分支,以便每个应用程序发行版的所有历史记录都存储在一个存储库中。

因此...标记每个版本和分支“按需”。

0

您需要标记来标记v1.0,v1.01和v2.0等版本。对于分支开发(错误修复,功能分支等),您可以使用书签 - 它们现在非常好支持协同使用(见http://mercurial.aragost.com/kick-start/en/bookmarks/#sharing-bookmarks)。如果您需要长期存在的分行(即他们将在可预见的未来将进入回购行)使用命名分行。他们会是一个不错的选择,例如有v1,v2,...分支的发展。

你可以只使用书签短期和长寿命仅枝树枝命名,但它成为标准的做法时,你可以给喜欢的书签。

另请参阅mercurial: mix named branches and bookmarks以获得关于书签和命名分支如何不同的快速图形回答。