Mercurial 如何使用hg的defaut稳定分支工作流与其他开发人员协作

Mercurial 如何使用hg的defaut稳定分支工作流与其他开发人员协作,mercurial,workflow,branch,tortoisehg,branching-and-merging,Mercurial,Workflow,Branch,Tortoisehg,Branching And Merging,我发现了一篇关于git工作流的文章,并试图将其应用到我自己的hg项目中,当我为每个功能创建分支时,似乎有点混乱,因为在git中,分支可以被删除,而在hg中,它只能被关闭。因此,这将导致回购协议中出现大量关闭的分支机构,而这正是我不希望看到的 后来,我在谷歌上搜索了另一篇关于Hg工作流的文章,我尝试了它,当我是项目的唯一开发人员时,它看起来不错,但当我尝试添加另一个开发人员时,历史变得有点复杂 我用三份回购协议测试了这一点 1, Base 2, devA ---> stands for

我发现了一篇关于git工作流的文章,并试图将其应用到我自己的hg项目中,当我为每个功能创建分支时,似乎有点混乱,因为在git中,分支可以被删除,而在hg中,它只能被关闭。因此,这将导致回购协议中出现大量关闭的分支机构,而这正是我不希望看到的

后来,我在谷歌上搜索了另一篇关于Hg工作流的文章,我尝试了它,当我是项目的唯一开发人员时,它看起来不错,但当我尝试添加另一个开发人员时,历史变得有点复杂

我用三份回购协议测试了这一点

1, Base
2, devA   ---> stands for developer A's repo
3, devB   ---> stands for developer B's repo
首先,我在devA上工作,在devA的默认分支上进行更改,在devA的稳定分支上进行错误修复。之后,我把德瓦推到基地

德瓦曲线图:

如果图像损坏,则基于文本的图形如下所示:

@    summary:     Merge with stable
|\   tag:         tip
| |  parent:      4:d2973e149720
| |  parent:      5:3788143e99fc
| |  date:        Mon Jul 30 13:17:44 2012 +0800
| |  
| |
| o  changeset:   5:3788143e99fc
| |  branch:      stable
| |  parent:      3:4a955d01ea44
| |  date:        Mon Jul 30 13:17:19 2012 +0800
| |  summary:     fix a bug in featureA
| |
o |  changeset:   4:d2973e149720
| |  parent:      2:8e106fcfa9bf
| |  date:        Mon Jul 30 13:16:46 2012 +0800
| |  summary:     finish featureA advance
| |
| o  changeset:   3:4a955d01ea44
|/|  branch:      stable
| |  parent:      1:7b81b986d485
| |  parent:      2:8e106fcfa9bf
| |  date:        Mon Jul 30 13:16:01 2012 +0800
| |  summary:     Merge with default
| |
o |  changeset:   2:8e106fcfa9bf
| |  parent:      0:7d7dc422ec7c
| |  date:        Mon Jul 30 13:15:43 2012 +0800
| |  summary:     finish feature A
| |
| o  changeset:   1:7b81b986d485
|/   branch:      stable
|    date:        Mon Jul 30 13:14:49 2012 +0800
|    summary:     Create stable branch
|
o  changeset:   0:7d7dc422ec7c
   date:        Mon Jul 30 13:14:21 2012 +0800
   summary:     Init commit
然后我切换到devB,因为我想模拟一个并行工作,所以我没有从基础开始,而是开始处理devB的默认分支,并对devB的稳定分支进行错误修复

devB的图与devA的图相似

问题来了,当我试图将devB的更改推送到Base时,它说有冲突,我需要在本地合并它,我拉了这些更改,然后我在devB中的历史图变得有点混乱,因为我得到了devA的默认和稳定,所以在devB中现在有两个默认分支和两个稳定分支


让我困惑的是,真正的项目是如何使用这种工作流的,mecurial的分支图是这样的。看起来很干净,但他们是如何做到的?

不要将存储库拆分为开发人员分支,而是拆分为功能分支。每个分支应该有合理数量的提交,所有提交都用于特定功能的实现。在每次构建/发布时,您都会选择准备好部署的分支,并将它们合并为默认值。

0.9.5虽然尚未正式发布,但它工作得很好,实际上允许您完全删除功能分支。摘自维基:

添加了“完成”操作的“擦除”。使用此选项,可以在分支成功完成后从存储库中完全删除分支。最后的效果是,分支中的所有更改都被折叠,然后作为单个更改集提交到分支合并到的目标分支。查看hg flow help@finish了解更多细节


但这将导致大量分支无法删除,也许这是一个好方法,但我不清楚tortoishg和mercurial如何使用默认的稳定分支工作流。@shengy,它们将在合并时成为默认分支工作流。请注意,在更改6之后只有一行。嗯。。。我不明白你的意思,你能详细解释一下吗?或者发布一个答案?@shengy,当您处理完分支并将其合并到其他地方时,很可能默认情况下,它不会变成关闭的分支。在图表上,两条线只是合并成一条线,然后作为一条线/分支继续。但如果我有10个功能,我应该将其合并10次,这一切都没关系,如果我在feture 1上有一个bug,我必须更新到功能1,修复该bug并再次合并,这将导致大量分支,并使中央回购的历史图表变得越来越复杂。我知道有什么方法可以将合并的本地默认分支仅推送到服务器?