~15名开发人员的Mercurial工作流程 - 我们应该使用命名分支吗?

时间:2010-02-26 16:50:13

标签: mercurial branch

我的团队刚开始使用Mercurial和一个中央存储库。我们让哈德森建立了“默认”分支的尖端 - 这基本上是我们的主线。我们的旧VCS签到了一个签到政策,在您登录主线之前必须完成代码审查,测试等工作。

所以,假设您正在处理功能X.您正在处理某些内容,基于“默认”,然后您将部分功能作为检查点。在本地,你的“默认”现在已经破了 - 你还没有与任何人分享,但如果你要推动,那么现在你已经在主线上破解了代码。

即使你等到你把它全部整理好了,似乎有些情况(例如同时处理两件事)你需要推动一些改变但不是全部。

此外,如果您检查所有检查点更改,那么将在主线中进行一些修改,而主线中的其他修订将不构建。

我们已经开始使用命名分支 - 但我读的越多,我认为我们错误地使用了命名分支。

有关如何设置良好的工作流程以便我们运行Hudson并保持主线政策的任何建议吗?

5 个答案:

答案 0 :(得分:18)

首先,我强烈推荐A Guide to Branching in Mercurial

接下来,您可以推送当前分支:[** Nudge - 推送的更温和版本](链接现在陈旧)

也许你可以决定每个分支只允许一个头:32. Prevent a push that would create multiple heads

与命名分支相关的其他SO问题:

答案 1 :(得分:2)

您可能会考虑至少两个存储库。 “主线”存储库包含经过测试和审核的代码。代码仅在Hudson测试之后以及在您完成任何评论之后才被推送到此存储库。 “测试”存储库将是主线的克隆。这是Hudson监视的存储库,因此每当将变更集推送到测试存储库时,Hudson测试就是。您可以设置Hudson构建步骤,以便在测试通过时将更改从测试存储库推送到主线。

开发人员总是推送到测试存储库,但只从主线上拉,因此他们只需要提供经过测试的代码。如果他们需要共享未经测试的变更集,他们可以在彼此的本地存储库之间直接推/拉。也许可以将Hg配置为使得主线仅接受来自测试存储库的推送,以便开发人员不会意外地推送到主线而不是测试。

拥有评论存储库可能也不错。因此,开发人员推动测试,Hudson推动测试代码进行审核,然后审核代码推送到主线。

免责声明:我只是在琐碎的项目上以及琐碎的方式使用Hg。

答案 2 :(得分:2)

我们在公司所做的是使用命名分支来区分稳定版本(我们只提交错误修复)和下一个开发发生的版本,我们定期将修复从稳定版本恢复到默认版本(使用默认分支上的hg merge stable

对于代码审查,我们使用mq扩展来使开发人员能够提交干净的补丁。开发人员可以从彼此的存储库中获取,而不会污染参考存储库。

免责声明:我们不使用Hudson。

答案 3 :(得分:2)

这是一个心态问题。分布式VCS不需要您保留单个中央存储库。

不是让所有人都可以检查主线,而是使用有限的写访问权限进行设置。只有经过批准(测试,签字,对您有意义的)的变更集才会被纳入主线。

如何管理变更主线是一个广泛的问题,有许多可能的答案。这是我头脑中的两个:

  • 开发人员可以自由地推动中央“测试”回购,从中审核变更。
  • 让开发人员在他们自己的工作站上发布变更集(请记住,分支机构很便宜)并让主线审核流程直接从那里接收它们。

答案 4 :(得分:0)

您还可以考虑使用Bookmarks扩展名而不是命名分支。

如果您熟悉git,书签的行为就像git-branches而不是mercurial branches。