Mercurial在团队中工作

时间:2011-07-01 21:16:20

标签: mercurial

我们是Mercurial的新手,我们通过评估等等,现在正在使用它。

问题在于我们在团队中使用它的方式。

我们已经做了一些研究,这个链接看起来像是同一个问题,但解决方案在实践中看起来有点复杂 http://blogs.oracle.com/tor/entry/mercurial_tip_checking_in_regularly

我们的问题是我们有一个团队在同一个软件项目上工作 - 没有什么新东西 - 我们使用网守模型进行推送。

一名团队成员对“文件A”进行了大量更改,这需要一段时间,他一直在努力,在本地进行更改。

在文件A上工作的过程中,他被要求解决问题并修复文件B中的问题。这是为了帮助其他开发人员。他怎么能这样做?他不希望文件A的不完整更改进入关守,但他需要推动他的文件B更改。

3 个答案:

答案 0 :(得分:6)

让开发人员创建一个名为File_B_Fix或类似的新本地目录,然后将共享存储库克隆到该目录。对文件B进行修复,然后将更改推送回共享存储库。

答案 1 :(得分:1)

我喜欢使用命名分支。我们目前为每个新功能创建一个命名分支。然后,如果您需要修复错误,可以使用update命令跳转到stable或default(无论您想要调用它)。您也可以使用克隆。所以看看有关差异的一些想法见 Mercurial: Named Branches vs Multiple RepositoriesA Guide to Branching in Mercurial

答案 2 :(得分:0)

对于这个特定情况,并且为了增加它的灵活性,我建议你学习并使用Mercurial Queues。这是一个非常宝贵的工具,每个使用Mercurial的人都应该添加到他们的工作流程中。

在您的情况下,该团队成员会这样做:

hg qinit -c
hg qnew changes-to-fileA  # creates a new patch with the outstanding changes
hg qnew changes-to-fileB  # creates a new empty patch

# work on file B

hg qrefresh               # updates the patch with changes to file B

阅读MQ tutorial,了解如何将这些更改提交给回购。

另一种选择是shelve扩展,它允许您临时预留任何未完成的更改,处理文件B,然后恢复更改。但是使用MQ可以为您带来许多额外的好处。