SVN使用总结
常用命令
-
建立分支 --- svn copy/cp
svn cp http://example.com/repos/myproject/trunk http://example.com/repos/myproject/branches/branchname -m 'new branch description'
```
-
迁出分支 --- svn checkout/co
svn co http://example.com/repos/myproject/branches/branchname
注:在Branch和Trunk两边的提交都会引起主版本号的增加,这是由于svn copy只支持
同一个repository```内的文件copy,并不支持跨repository的copy,因此新建的Branch和Trunk都属于同一个repository。
-
提交内容 --- svn commit/ci
svn ci -m "commition message" filepath
```
- 合并分支 --- svn merge
-
Branch merge to Trunk (在Trunk目录下)
-
svn merge http://example.com/repos/myproject/branch/branchname
// 将Branch的从版本150到当前版本的所有改动都合并到Trunk中
svn merge http://example.com/repos/myproject/branch/branchname -r150:HEAD
```
* Trunk merge to Branch (在Branch目录下),类似Branch1 merge to Branch2
```
svn merge http://example.com/repos/myproject/trunk
```
-
查看合并情况 --- svn mergeinfo (在Trunk目录下)
// 查看当前Branch中已经有哪些改动已经被合并到Trunk中
svn mergeinfo http://example.com/repos/myproject/branches/branchname
// 查看当前Branch中那些还未合并
svn mergeinfo http://example.com/repos/myproject/branches/branchname --show-revs eligible
```
解决冲突
- 处理选择
- (p) postpone --- 推迟处理
- (df) diff-full --- 列出所有的修改
- (e) edit --- 直接编辑冲突的文件
- (mc) mine-conflict --- 只用自己的修改,去掉别人的修改
- (tc) theirs-conflict --- 去掉自己的修改,使用别人的修改
- (s) show all options --- 显示其他所有的命令
- 提交代码遇到的冲突
-
xxx is out of date
- 本地某文件或目录结构冲突
- 解决方案
- svn update;
- 若svn合并成功,则svn commit提交本地的修改。
- 若产生冲突(
One or more files are in a conflicted state.
)
-
One or more files are in a conflicted state
- 本地文件冲突
- 解决方案
-
现在postpone
-
多出3个文件,xxx.mine、xxx.r777、xxx.r778
-
xxx文件中出现如下内容,其中小于号和等号之间的内容是本地的修改,而等号与大于号之间的内容是远程的修改(即有冲突的部分)
<<<<<<< .mine ............... ======= ............... >>>>>>> .r778
-
根据所需的修改,对xxx文件进行修改
-
完成修改后,输入svn resolved xxx命令,本地删除原先多出的3个文件
-
注:xxx是尝试合并的文件;xxx.r777是本地修改文件的基础版本,777是版本号;xxx.mine是本地修改后的文件,即,在xxx.r777文件基础更改的文件;xxx.r778是远程最新版本的文件,778是版本号
-
svn合并分支时遇到的冲突
- 两个操作:增加本地没有的文件、合并本地已有但不同的文件
- 若产生冲突,则采用
One or more files are in a conflicted state
相同的办法处理冲突
-