现在网上git的分支管理最佳策略最好查找, 基本上都趋同于一个.
由nvie建议的git branching model.
地址: http://nvie.com/posts/a-successful-git-branching-model/
Nvie画的这张图基本上把策略显示出来了.
稍微介绍一下分支:
Master: 主分支(分支名字:”master”)。所有提供给用户使用的正式版本,都在这个主分支上发布。且每个版本都会打一个tag( tag名字例: “0.1”,”0.2”,”EMC-0.1”,… )
Develop: 开发分支(分支名字:”develop”),所有最新的代码都应该在这里.
Feature branch:功能分支(分支名字例:”myfeature”,”log”,”view_version”,…), 用于开发某个功能,比如添加log或者查看版本信息等功能,某个功能开发完毕后把代码合并回develop分支并且删除此功能分支. 此分支一般只创建在本地,不用同步到服务器. 不过如果你的代码只要几天就完成,一般没必要另起一个分支,直接在develop分支上修改,改完后提交就可以了.
Release branches: 预发布分支(分支名字例: “release-0.1”, “release-0.2”,”EMC-release-0.1”,…), 用于在发布正式版本之前,可能需要有一个预发布的版本进行测试。在测试中发现的bug全部修正在此分支.修正完毕后将代码merge到develop和master分支,然后可以删除此分支.
Hotfix branches: 修补bug分支(分支名字例:”hotfix-1.2.1”,”hotfix-1.3.1”,”EMC-hotfix-1.4.1”, 其中的版本号为下个发布版本的版本号), 用于在正式发布版本上发现了bug,需要修复在小版本号上,这时可以从mast分支中拉出一条分支来修正bug,修正完毕后将修改merge回master和develop,然后删除此分支.
虽然目前git很火,但是SVN还是有很多优点,完全适用于一些小团队.
Git需要打很多命令,分支需要经常换来换去,有时还忘了把代码同步到服务器上,没有一个全局版本号.
SVN基本上不需要打命令,所有的文件全都提交到服务器上,不会忘了提交,最好的一个特点就是全局版本号.
那SVN分支管理有什么最佳策略呢?
我给出我的建议:
其中
Trunk: 主开发分支,所有最新的代码都在这里
Tags: 一个里程碑版本(名字:”1.0”,”1.1”,”2.1”,”EMC-1.0”,”EMC-1.1”,”OEM-1.0”…),用于存放发布的版本
Bugfix branch: 修正bug的分支(名字:”bugfix-1.x”,” EMC-bugfix-1.x”, “OEM-bugfix-1.x”),一般从某个tag拉出来,用于解决这个大版本的所有bug
Customize function dev branch: 特殊需求的开发分支(名字:”OEM-dev”,”Japan-dev”,…),用于为某个客户的特殊需求开发一个版本,