我已经使用 mercurial 有一段时间了,但还没有真正习惯使用分支,所以在将其应用于实际项目之前,我正在努力弄清楚这个工作流程是否有意义。
问题:
每次我们要通过将 development
合并到新版本中来重新创建 production
分支真的有意义吗,或者我们应该创建像 development-1.1
这样的唯一命名的短期开发分支?
工作流描述:
我们代码的每个生产就绪版本都将被标记( 1.0
、 1.1
等)并放置在 production
分支中。一旦我们将 1.0
投入生产,我们立即开始下一个版本 - 1.1
的工作,通过打开一个名为 development
的分支,然后每个开发人员为每个分配的功能创建子分支以保持整洁。到目前为止非常简单。development
分支,现在包含合并的 feature
分支,然后被测试并合并回 production
,因为这些更改已被视为生产就绪。
当我们需要继续处理即将发布的版本时,在本例中为 1.2
,我们将 production
分支合并到 development
分支中并开始工作。
修订历史说明:
@ changeset: 8:21e89b501d4e
|\ branch: development
| | tag: tip
| | description: Development stage for v1.2 opened by merging production into development.
| |
| o changeset: 7:920ca77aa956
|/| branch: production
| | tag: 1.1
| | description: Version 1.1 stable (merged from development).
| |
o | changeset: 6:691b7aa99e42
|\ \ branch: development
| | | description: Feature merged in to development
| | |
| o | changeset: 5:5156cb9cf556
| | | branch: feature
| | | description: Feature finished
| | |
| o | changeset: 4:0345dc73e144
|/ / branch: feature
| | description: Work started on a feature
| |
o | changeset: 3:9d49be5d8a03
|/ branch: development
| description: Development branch opened
|
o changeset: 2:ba818420fa88
| branch: production
| tag: 1.0
| description: Version 1.0 stable. Woop woop!
最佳答案
Mercurial 命名分支 是永远的,因此一般建议是只将它们用于始终适用的名称。诸如“稳定”和“开发”之类的东西,而不是诸如“bug-194534”和“release-1.1”之类的东西。这很好解释 in the wiki 。
对于生命周期有限的东西,你最好使用类似 书签 的东西,它比 Mercurial 命名的分支更接近 git 调用的分支。其他短期概念的不错选择是 匿名分支 或 克隆 ,两者都是非永久性的。
一般建议是使用 default as your development branch ,但简而言之,是的,继续重复使用相同的分支进行开发。
关于version-control - 在 Mercurial 的开发和生产之间切换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9153623/