解决SVN更新冲突

冲突发生的情况

假设A、B两个用户,他们分别从SVN服务器中检出了test.js文件,此时A、B、服务器三个地方的test.js的版本都是13。现在,B用户修改文件内容并提交,此时B用户和服务器的test.js的版本都变为14,只有A用户的test.js的版本还是13。接下来,A用户修改不同的内容然后提交。
由于A用户是在13版本上做的修改,而服务器已经是14版本了,所以会提交失败。
提交失败之后有两个选择:第一,选择revert,省去了解决冲突的麻烦;第二,选择更新文件,这时会有冲突问题。

解决冲突

更新后会产生以下冲突文件:

  • test.js.mine: 13版本内容 + A用户的修改
  • test.js.r13: 13版本内容
  • test.js.r14: 13版本内容 + B用户的修改
  • test.js: 14版本内容 和 A用户的修改 合并后的文件

根据需要整理test.js的内容,然后右击文件点击resolve标记为解决,这时只剩修改完毕的文件存在,其他三个文件都会自动消失。如果新版本不需要用户B修改的内容,可以直接复制test.js.mine的内容替换test.js的内容。然后用户A就可以顺利提交了。

冲突符号

在整理test.js时,不会遇到如下的特殊符号:

1
2
3
4
5
6
7
<<<<<<< .mine
A用户的修改内容
||||||| .r14
B用户的修改内容
=======
13版本内容
>>>>>>> .r13

修改后的代码里不能出现这些符号。