SVN的冲突解决
SVN中多人操作同一个文件可能造成冲突,假设有两名开发人员dev1和dev2。文档test.txt的最新版本为33,内容如下
- 不同的用户修改不同的行
dev1将第1行aaa修改成aa0然后提交,此时SVN服务该文件的最新版本是34
dev2 在33版本上将bbb修改成bb0
提交时报告该文件已过期
选择Update就是将服务器上的34版本更新到本地,
更新完成,并且SVN自动完成合并,此时并没有产生冲突,接下来可以顺利提交合并后的文件。
以上是比较简单的情形。SVN是按行比较的。如果不同的用户在不同的
- 不同用户在不同地方新增内容
后提交的用户提示文件过期,要求更新,更新时又会提示合并文件冲突,要求手工修改冲突。
例如原始文件
dev1用户修改成如下,然后提交
dev2做如下修改提交
合并时候产生冲突,SVN产生如下几个文件
- 其中test.txt是合并后带冲突的文件,里面增加了冲突标记
- .r41是本次修改的基版本
- .mine文件是本地文件也就是.r41+本次修改的内容
- r42是服务器最新版本
解决冲突方法1:手工合并
- 备份本次修改即.mine文件
- 撤销本次修改执行Reverse操作,此时文件为服务器最新版本
- 将文件与备份文件比较执行Diff操作,手工修改
解决冲突方法2:在SVN中合并
其中
theirs 是服务器中最新版本,mine本地版本,merged是合并后的版本;这三个区域中红色的区域是冲突的行,黄色的区域是没有行号的,表示冲突之前的内容。
如果是接受theirs或者mine其中之一,执行以下操作:
如果是要合并所有更改,可以按行解决冲突,例如希望接受所有的更改,结果应该是
aa
11
bb
22
操作如下:
在第二行上右键执行
在第三行上执行
带减号的行不会进入合并的内容。
SQL Server