提出问题:
产品开发迭代快,而前端为项目中的关键路径,在本迭代还未结束
期间,通常是测试期间已经开始下个迭代任务的开发;
这些代码版本如何控制?
多人协作时如何控制?
发布时如何进行合并?
Hotfix时如何做回滚?
解决方案:多分支开发系统
服务端环境:SVN
客户端软件:小乌龟TortoiseSvn
分支、主干和标记:用于并行开发,当分支的功能完成后就可以合并到主干,而
利用标记就可以在任何时间创建一个发布版本。
注意,你可以建多个分支,但主干只能有一个
创建分支步骤:
1、首先,你应该在本地有一个需要创建分支的工作目录,如:E:\test
2、点击右键选中这个文件夹,选中TortoiseSVN->分支/标记(branches/tag)
接下来,会弹出对话框,要求你添加创建分支或标记的目标路径
三个版本选项:
最新版本 – 直接从版本库中最新创建,创建过程最快。
版本库中指定的版本号 – 可以通过指定的版本号进行创建。这种创建方式不需要从你的工作目录拷贝数据,速度较快。
切换工作副本至分支/标记:
如果选中这个选项,顾名思义你用来创建分支或标记的工作拷贝就会自动切换到指定创建的版本或标记的。当然你可以通过Switch(重新定位)和Checkout(检出)功能来完成切换的工作。
版本切换:找到工作目录,点击右键展开菜单,点击switch(切换)
在一些阶段,你可能需要将分支上的修改合并到最新版本,或者将最新版本的修改合并到分支,如何进行合并?
分支和合并的工作是非常复杂的,Subversion Book的分支与合并章节有各种情况的详细描述。
合并的基础是在版本库产生两个差异列表,然后对你的工作副本应用这些差异。举例说明:如果你要合并版本N的修改,那么你要与版本N-1比较,TortoiseSVN自动为你做这个调整。
通常来说,在没有修改的工作副本上执行合并是一个好想法。如果你在工作副本上做了修改,请先提交。如果合并
没有按照你的想法执行,你可能需要撤销这些修改,命令恢复 会丢弃包含你执行合并之前的所有修改。
下面看一个用例来说明:
合并指定版本范围
- 首先切换至主干
- 然后选择merge
- 弹出对话框后选择merge revision range
- 弹出对话框选择一个需要合并的分支
- 选择一个或多个需要合并的标记
- 最后设置合并选项,建议可使用test merge测试合并结果
在合并选项中可以指定行结束和空白的处理方式
注意:
合并到主干/分支后一定要提交commit
然后就可以通过构建和部署工具进行资源分发了
多分支开发满足了特定情况下时实现前端的最大并行开发~
如何回滚
SVN不会丢弃任何数据,包括删除操作,所有的版本都会以中间版本的形式存在。
如果你真的需要彻底删除它,需要使用一些极端的手段。
这样你可以使用日志对话框(Log)在任何需要的时候回归到任一版本。
如果想要把以前的某个版本变成最新版本,右键点击选中的版本(范围),然后选择右键菜单 → 恢复到此版本。就能够撤销被选中版本后面所有的变更。
如果想要恢复一个版本范围,选中想要恢复的第一个版本,按住shift键,然后选中想要恢复的最后一个版本。注意,当恢复多个版本的时候,这些版本必须在列表中是连续的。用鼠标右键点击选中的版本(段),然后选择右键菜单 → 恢复这些版本的变更。
- 使用合并功能同样可以撤消较大范围的变更。
- 输入你需要合并的url和版本号进行合并
- 最后记得提交变更!