我发现一篇文章谈论git的工作流程here,并试图将它应用到我自己的hg项目中,当我为每个功能创建一个分支时,似乎有点乱,因为在git中,分支可以被删除,而在hg中,它只能被关闭。所以这将导致回购中大量封闭的分支,这就是我不想看到的。
后来,我搜索了另一篇谈论Hg工作流的文章here我试过了,当我是该项目的唯一开发人员时似乎很好,但是当我试图添加另一个开发人员时,历史就变成了有点复杂。
我用三个回购测试了这个
1, Base
2, devA ---> stands for developer A's repo
3, devB ---> stands for developer B's repo
首先我在devA上工作,对devA的default
分支进行了更改,并在devA的stable
分支上进行了修改。之后,我将devA推送到Base。
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,因为我想模拟并行工作,所以我没有从Base中取出,而是开始在devB的default
分支上工作,并在devB的{{1}上做bugfix分支。
devB的图与devA的图相似
问题出现了,当我尝试将devB的更改推送到Base时,它表示存在冲突,我需要在本地合并它,我撤消了更改然后我在devB中的历史图变得有点凌乱,因为我得到了devA的stable
和default
所以在devB中现在有两个stable
个分支和两个default
个分支。
答案 0 :(得分:1)
不要将存储库拆分为“开发人员分支”,而是将“功能分支”分支。每个分支应该具有相当少的提交数量,所有提交都用于实现特定功能。在每个构建/发布中,您选择准备部署的分支并将它们合并为默认值。
答案 1 :(得分:0)
latest hgflow(0.9.5,尚未正式发布,但效果很好)实际上允许您完全删除功能分支。摘自其Wiki:
添加了 - 完成操作的选项。使用此选项,您可以在分支成功完成后擦除(即完全从存储库中删除)分支。最终效果就好像分支中的所有更改都已折叠,然后作为单个变更集提交到分支合并到的目标分支。查看hg flow help @finish了解更多细节。