SVN分支的创建与合并

#SVN分支的创建与合并\
标准的分支目录如下:\
myproject/\
trunk/ (主分支)\
branches/ (分支)\
tags/ (标记)\
现在的项目目录如下\
➜ zhangzhongbao tree -L 2\
.\
└── cm\
├── doc\
├── download\
├── out\
├── pom.xml\
├── src\
└── target

6 directories, 1 file\
Tips
由于我的项目在创建的时候,并没有trunk,现在由于项目需要重新创建分支来进行版本控制.

1.创建分支\
cd /Users/huanggaoming/Desktop/tmp/zhangzhongbao\
svn mkdir branches (由于的不存在branches目录重新创建)\
svn mkdir branches/cm \
svn commit -m \”创建分支目录\” \
svn copy https://10.211.55.3/svn/zhangzhongbao/cm
https://10.211.55.3/svn/zhangzhongbao/branches/cm/v-20160716 -m
\”7月16日的版本\”
(创建分支,原则上尽量和cm平级,但是为了区分,我这里没有平级,版本+1了)\
svn update .\
➜ zhangzhongbao tree -L 2\
.\
├── branches\
│ └── cm\
└── cm\
├── doc\
├── download\
├── out\
├── pom.xml\
├── src\
└── target

8 directories, 1 file

➜ zhangzhongbao tree -L 3 branches\
branches\
└── cm\
└── v-20160716\
├── doc\
├── download\
├── out\
├── pom.xml\
├── src\
└── target

7 directories, 1 file

Tips:需要注意的是Branch和Trunk使用同一套版本号,也就是说无论在Branch还是Trunk的提交都会引起主版本号的增加。这是因为svn
copy只支持同一个repository内的文件copy,并不支持跨repository的copy,所以新创建的Branch和Trunk都属于同一个repository。

2.合并分支\
在分支进行一系列的操作\
(1) 查看状态\
svn status (没有任何的本地修改)\
(2) 合并分支到主干\
cd /Users/huanggaoming/Desktop/tmp/zhangzhongbao/cm\
svn merge https://10.211.55.3/svn/zhangzhongbao/branches/cm/v-20160716
\
(svn merge https://10.211.55.3/svn/zhangzhongbao/branches/cm/v-20160716
-r35:HEAD) 将Branch的从版本35到当前版本的所有改动都合并到Trunk中\
(3) 提交保存\
svn commit -m \”合并v-20160716分支\” \
(4) 合并版本并将合并后的结果应用到现有的分支上 \
svn -r 148:149 merge https://10.211.55.3/svn/zhangzhongbao/cm

-查找到分支版本\
cd /Users/huanggaoming/Desktop/tmp/zhangzhongbao/branches/cm/v-20160716\
svn log –stop-on-copy (最后rid就是创建分支时的reversion)\
=\
cd /Users/huanggaoming/Desktop/tmp/zhangzhongbao/cm \
svn log -q –stop-on-copy
https://10.211.55.3/svn/zhangzhongbao/branches/cm/v-20160716

-解决冲突\
svn st | grep \^C # 查找合并时的冲突文件,手工解决冲突\
svn resolved filename # 告知svn冲突已解决\
svn commit -m \”\” # 提交合并后的版本\
svn: Aborting commit: \’/path/resources/noc\’ remains in conflict\
\$ svn revert resources/noc\
Reverted \’resources/noc\’

3.查看分支\
svn mergeinfo
https://10.211.55.3/svn/zhangzhongbao/branches/cm/v-20160716\
➜ cm svn mergeinfo
https://10.211.55.3/svn/zhangzhongbao/branches/cm/v-20160716\
youngest common ancestor\
| last full merge\
| | tip of branch\
| | | repository path

34        39       40\
|         |        |\
   --| |------------         branches/cm/v-20160716\
  /        \\\
 /          \\\

——-| |———— cm\
|\
WC

查看Branch中那些改动还未合并:\
svn mergeinfo
https://10.211.55.3/svn/zhangzhongbao/branches/cm/v-20160716
–show-revs eligible

4.发布-tag管理(创建分支一样)\
cd /Users/huanggaoming/Desktop/tmp/zhangzhongbao\
svn mkdir tags (由于的不存在tags目录重新创建)\
svn mkdir tags/cm \
svn commit -m \”创建tags目录\” \
svn copy https://10.211.55.3/svn/zhangzhongbao/cm
https://10.211.55.3/svn/zhangzhongbao/tags/cm/v-20160716 -m
\”7月16日的版本\”
(创建tag,不允许开发在上面进行任何的修改)\
svn update .

➜ zhangzhongbao tree -L 2\
.\
├── branches\
│ └── cm\
├── cm\
│ ├── doc\
│ ├── download\
│ ├── out\
│ ├── pom.xml\
│ ├── src\
│ └── target\
└── tags\
└── cm

10 directories, 1 file

➜ zhangzhongbao tree -L 2 tags/cm\
tags/cm\
└── v-20160716\
├── doc\
├── download\
├── out\
├── pom.xml\
├── src\
└── target

6 directories, 1 file\
5.

坚持原创技术分享,您的支持将鼓励我继续创作!