使用hg不短时间了,但是一直作为个备份工具来用,今天看到几位牛人的hg实践,很受启发,总结如下
上图来源于 A successful Git branching model,利用git来实践基于branch/merge版本管理。
首先整个项目要有两个主分支:master和develop,其中master是产品发布的主分支,要做到足够稳定,不能轻易修改;而develop是程序员用的开发分支,每日构建要在这个分支上做,也要做到稳定。开发完成后merge到master上并打上版本号tag。
三个辅助分支:release、feature和hotfix。
一个新的功能就是一个新的feature分支。
- May branch off from: develop
- Must merge back into: develop
- Branch naming convention: anything except master, develop, release-*, or hotfix-*
功能完成,准备发布,这时启用release分支,来修改小bug,为发布做准备
- May branch off from: develop
- Must merge back into: develop and master
- Branch naming convention: release-*
已上线的产品修改bug,启用hotfix分支
- May branch off from: master
- Must merge back into: develop and master
- Branch naming convention: hotfix-*
应该说整个流程还是比较繁琐的,该文档是基于git的,git flow是一个比较靠谱的简化流程工具,推荐使用。
我用的是hg,发现也有一个类似的简化工具:hg flow,试用了一下感觉不错~
使用方法: 在没有版本管理的工程中
1 2 |
|
要新增功能的时候,name随意
1
|
|
新增功能
使用TortoiseHg的 Repository Explorer查看目前所处分支状况, 使用TortoiseHg的commit提交功能
功能完成的时候
1
|
|
如果要添加新的功能:重复上两个步骤
如果同时开了多个功能,切换不同功能开发的时候要先切换到该功能的分支
1
|
|
到达预定的功能发布点,name:release-版本号
1 2 |
|
只在修改小型bug时使用,如果在hotfix上新建feature的话会导致直接从develop上开分支,hotfix的更改会暂时隐藏,只有在hotfix finish的时候才能merge。 name:hotfix-版本号.hotfix号
1 2 |
|
feature和release要一块使用 hotfix自己单独使用,不需要再release了