之前使用github时候,感觉使用git拉分支非常简单。今天在公司使用SVN拉分支,有些懵逼啦。参考该博文如何在Intellij IDEA中拉SVN分支成功在Intellij IDEA中完成了SVN的分支创建。
关于SVN中的Branches与Tags概述
在版本控制的系统中,我们经常需要对开发周期中的单独生命线作单独的修改,这条单独的开发生命线就可以称为Branches即分支。分支经常用于添加新的功能以及产品发布后的bug修复等,这样可以不影响主要的产品开发线以及避免编译错误等。当我们添加的新功能完成后可以将其合并到主干中。
而Tags即标签主要用于项目开发中的里程碑,比如开发到一定阶段可以单独一个版本作为发布等,它往往代表一个可以固定的完整的版本,这根VSS中的Tag大致相同。
SVN中的Branches以及Tags经常容易混淆,因为在TortoiseSVN中创建方法是一致的,而且它们都是通过存储类似Linux中的lunch快捷方式一样,只是创建了指向某个版本的链接,而不会真正将此版本的内容复制到分支或者标签中,这样既可以节省空间,也可以很快速的创建。
为了便于创建分支和标签,我们习惯于将Repository版本库的结构布置为:/branches,/tags,/trunk。分别代表分支,标签以及主干。还有一点值得注意的是,SVN不推荐在创建的Tag基础上Revision,这种情况应用Branches,因为Tag一般保持不变不作任何修改。
使用TortoiseSVN拉分支
创建Branch分支或者Tag标签
推荐结构:
- Test
- branches
- tags
- trunk
- 首先将项目checkout到本地,然后选中该项目文件夹,点击右键选中【TortoiseSVN】-【Branch/tag】
- 在Copy(Branch/Tag)面板上,修改To path路径,建议只需将/trunk/修改成/branches/即可,并选中【Switch working Copy to New branch/tag】
操作完成后,返现本地的trunk文件夹的SVN属性的URL已经被Switch到创建的版本的地址上了。
对比trunk和branches下的文件,你可以发现代码一模一样。
修改分支和使用合并Merge功能
在branches分支下,开发新的功能,然后SVN commit提交代码。然后可以切换到trunk下,你会发现内容没有变化。这说明在分支中的修改不会影响到主干上。在branch分支代码上选择【TortoiseSVN】-【Merge】-【Merge a range of revisions】
使用Intellij IDEA中拉分支
- 在你trunk目录下,有一个你需要创建分支的releases项目
- 使用IDEA导入该项目,点击项目右键找到【Subversion】-【Branch or Tag】
- 在Create Branch or Tag面板上,填写拷贝信息【Copy From】。【Copy From】有两个选择
- Working Copy: 本地拷贝
- Repository Location: 远程拷贝(SVN上拷贝)
- 在Create Branch or Tag面板上, 填写拷贝信息【Copy To】。【Copy To】有两个选择
- Branch or Tag: 拷贝到SVN上远程分支路径
- Any Location: 可以拷贝到本地、远程都行
- 至此如果不报错的情况下,就代表拉分支成功,接下来找到分支的SVN地址,checkout下来就行啦
参考资料
关于SVN中的Branches与Tags
如何在Intellij IDEA中拉svn分支?