创建一个Branch也相当简单,只需要一条命令即可。
1
|
|
这条命令是指给myproject这个repo创建一个名为releaseForAug的branch,使用-m来加入描述。
之后你就可以通过 svn
来迁出你的Branch源文件,在上面进行修改和提交了。
checkout http://example.com/repos/myproject/branches/releaseForAug
其实SVN并没有Branch的内部概念。我们只是创建了一个repo的副本,并自己赋予这个副本作为Branch的意义,所以这与git中的Branch有很大不同。
需要注意的是Branch和Trunk使用同一套版本号,也就是说无论在Branch还是Trunk的提交都会引起主版本号的增加。这是因为svn
只支持同一个repository内的文件copy,并不支持跨repository的copy,所以新创建的Branch和Trunk都属于同一个repository。
copy
合并
既然要创建分支也需要合并分支。基本的合并也是蛮简单的。
假设现在Branch上fix了一系列的bug,现在我们想把针对Branch的改变同步到Trunk上,那么应该怎么做那?
-
保证当前Branch分支是clean的,也就是说使用svn status看不到任何的本地修改。
-
命令行下切换到Trunk目录中,使用
svn
来将Branch分支上的改动merge回Trunk下。
merge http://example.com/repos/myproject/branches/releaseForAug -
如果出现merge冲突则进行解决,然后执行
svn
来提交变动。
ci -m 'description'
当然在merge你也可以指定Branch上那些版本变更可以合并到Trunk中。
1
|
|
示例中是将Branch的从版本150到当前版本的所有改动都合并到Trunk中。
你也可以将Trunk中的某些更新合并到Branch中,还是同样的方法。
查看当前Branch和Trunk的合并情况
可以使用svn
来查看merge情况。
mergeinfo
查看当前Branch中已经有那些改动已经被合并到Trunk中:
1 2 |
|
查看Branch中那些改动还未合并。
1 2 3 |
|