Q:为什么要分支?
A:项目开发一个迭代之后,在开发一个迭代之前,一般都是需要给项目设置分支,独立保存上一个版本的代码。这样有什么好处呢?比如说:开始下一个迭代,开发到一半的时候,发现上一个版本有一个紧急BUG需要立即发包修复,这个时候就可以在上一个分支上修改即可,就不需要回撤当前的代码了!
Q:如何创建分支?
A: 1. 在Project视图下,项目右键,SubVersion–Branch or Tag… 2. 在弹出的对话框中,点击Copy To 菜单下面的Base URL选择路径,在弹出的子对话框中,点击左下角的加号,选择分支的路径后点击OK,最后在子对话框的Branch locations区域点击分支路径即可 。
Q:如何合并分支?
在Project视图下,项目右键,SubVersion->Compare With branch…比较合并代码
点击提ok即可提交
有时候提交可能会报错,不能提交,原因有可能是你之前创建的文件已经ADD进去了,但是你没有提交到svn上就删除掉了,svn一直是记录着你有文件没有上传的。如下图所示:我是layout目录下有个名为:text_layout.xml的布局文件已经ADD了,但是没有提交就删掉了
A:解决方案:
根据报错提示,在指定路径下创建相同文件名的文件,然后提交到svn,最后再删掉即可!或者在指定路径下创建相同文件名的文件,然后revert一下再删掉即可
Q:svn merge error must be ancestrally related to,trunk merge branch报错
A:trunk merge branch的时候报错
xxx must be ancestrally related to xxx,这个报错的意思是两者不关联,所以需要去建立关联。
【回顾背景】
代码初始是先建立了branch,然后从branch copy to trunk。这个先后顺序有问题。应该是先建立trunk,再打branch,branch修改之后,再合并到trunk
【具体解决】
因为目前branch的代码是最新的,那么,目标是让trunk成为最新代码,然后再关联起来。
1、先删除现有trunk
2、将branch copy to trunk。
3、删除branch
4、下载主干,打branch:现在branch和trunk就关联起来了。
【总结】
1、遵守SVN的规则:先trunk,然后从trunk上打branch,然后修改branch,再合并到trunk,很有必要
命令行创建分支:
把服务器中的主干复制出来到自己的分支上:
svn copy svn://192.168.1.101/test/SVNTest svn://192.168.1.101/test/branch/yusheng_branch -m ‘余胜的分支’
建立分支之后,就重新check分支的项目到本地,以后提交代码就提交到分支上
命令行分支合并到主干:要先从服务器check两个项目,一个是自己的分支(分支从分支URL下载,主干从主干URL下载),一个是主干,自己的分支改完后commit,然后命令行切换到本地主干的目录下,合并分支到主干,例子:
xhj@xhj:~/yus/Trunk$ svn merge svn://192.168.1.101/test/branch/yusheng_branch
合并之后要提交本地主干的代码 xhj@xhj:~/yus/Trunk/app/src/main/res$ svn commit -m “提交主干”
命令行删分支 xhj@xhj:~$ svn rm svn://192.168.1.101/test/branch/yusheng_branch -m “删除yusheng_branch”
列出当前工程的信息,切换工程目录然后 svn info
将文件夹加入到版本控制 svn add 文件夹(这个有可能不是递归添加的)
将文件夹加入版本控制时一定要注意:递归添加,不然就是文件夹里面是空的
参考:
1.SVN分支的创建,合并,与销毁和相关操作
2.svn
3.svn 错误 以及 中文翻译