Mercurial 如何使用hg的defaut稳定分支工作流与其他开发人员协作
我发现了一篇关于git工作流的文章,并试图将其应用到我自己的hg项目中,当我为每个功能创建分支时,似乎有点混乱,因为在git中,分支可以被删除,而在hg中,它只能被关闭。因此,这将导致回购协议中出现大量关闭的分支机构,而这正是我不希望看到的 后来,我在谷歌上搜索了另一篇关于Hg工作流的文章,我尝试了它,当我是项目的唯一开发人员时,它看起来不错,但当我尝试添加另一个开发人员时,历史变得有点复杂 我用三份回购协议测试了这一点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
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并再次合并,这将导致大量分支,并使中央回购的历史图表变得越来越复杂。我知道有什么方法可以将合并的本地默认分支仅推送到服务器?