解决SVN代码冲突的一般方法

版本冲突原因:

假设a,b两个用户都在版本号为100的时候,更新了test.txt这个文件,a用户在修改完之后提交到服务器,这个时候test.txt的版本号已经变成了101了。同时b用户在版本号为100的test.txt上做修改,然后提交到服务器,由于不是在当前最新的101版本上做的修改,所以导致提交失败。

版本冲突现象:

冲突发生时,subversion会在当前工作目录保存所有的目标文件版本【上次更新版本,当前获取的版本(即别人提交的本本),自己更新的版本,目标文件】。

假设文件名是test.txt

对应的文件名分别是:

test.txt.r100

test.txt.r101

test.txt.mine

test.txt

使用Cornerstone会在目标文件标记来自不同用户的更改:

<<<<<<< .mine

你更改的代码=======

别人更改并已经提交到服务器的代码>>>>>>> .r101

其中<<<<<<< .mine与=======之间表示A修改后的内容,=======与>>>>>>>

.r101之间是版本服务器上的版本

解决冲突的方法:

和同事沟通后,如果采用自己更改的代码则手动删除他人的代码和多余的符号,然后提交。

如果采用他人的代码则删除自己的代码和多余的符号,然后提交。

使用终端svn不会在目标文件标记冲突内容,而是会在输入 svn up 更新命令后输出提示信息:

Select: (p) postpone, (df) diff-full, (e) edit,

(mc) mine-conflict, (tc) theirs-conflict,

(s) show all options:

输入df命令可以查看冲突的内容。

输入mc命令是采用自己的更改。

输入tc命令是采用他人的更改。

至此,更新完成。接下来就是提交的过程。

另外一种方法就是revert回滚:

恢复到上一次更新的代码,相当于放弃了本次自己更改的内容。

    原文作者:balancelibra
    原文地址: https://www.jianshu.com/p/478c01deda9d
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞