代码管理之 SVN resolve conflict(SVN 冲突)



以前都是在windows上操做SVN来着,转移到linux上以后出现冲突,后查了解决办法:

ZZ from:http://www.aixchina.net/club/thread-25902-1-1.html
这里,先说说冲突解决。

怎么会发生冲突呢?

两我的修改了不一样文件?不会有冲突,他们不相关。

两我的同时修改了同一个文件的不一样位置?不会有冲突,SVN很聪明。

两我的同时修改了同一个文件的相同位置?Bing!冲突来了。

工程师A修改了a.txt的第一行,提交了。

工程师B也修改了a.txt的第一行,而后执行svn up,这时SVN提示了:(如下,你开始扮演工程师B的角色了)
$ svn up
在 “a.txt” 中发现冲突。
选择: (p) 推迟,(df) 显示所有差别,(e) 编辑,
(mc) 个人版本, (tc) 他人的版本,
(s) 显示所有选项:

我通常选择p(推迟),即引入冲突到本地,不过不会影响到SVN服务器端,能够放心。

OK,开始解决冲突了。

这时,会生成几个文件:

a.txt

a.txt.mine a.txt.r6328 a.txt.r6336

其中a.txt中包含了工程师A、B的全部修改,以<<<<<<<、=======、>>>>>>>分隔。

a.txt.mine是工程师B的修改,也就是未update前的a.txt。

a.txt.r6328 是工程师A提交前的版本,即未致使冲突的版本。

a.txt.r6336是工程师A提交后的版本,即致使冲突的版本。

通常,查看a.txt就能够看到冲突的详情了:

[yicheng@chengyi svntest]$ cat a.txt

<<<<<<< .mine

i also modify ,agndagnagasdg;

=======

i modify this line;

>>>>>>> .r6336

以上,<<<<<<< .mine和=======之间是工程师B(当前的“你”)修改的内容,=======与>>>>>>> .r6336之间是工程师A修改的内容。这时,最好的办法是,叫上工程师A,大家一块儿肯定这些修改是否都须要,是否相互兼容,而后留下须要的部分,删 除<<<<<<< .mine、=======和>>>>>>> .r6336。

而后,测试,测试!肯定没问题以后,就能够告诉SVN,你解决冲突了:

svn resolve –accept working a.txt (该命令会删除a.txt.mine a.txt.r6328 a.txt.r6336)

svn ci -m ’some comment’ a.txt

这里须要注意的是,a.txt.mine a.txt.r6328 a.txt.r6336这几个文件的存在表明着有冲突产生。若是不解决冲突,就手 工删除它们,SVN服务器也会很傻的认为你解决了冲突,容许你继续以后 的工做。可是,冲突依旧存在,你的a.txt中不但有别人的修改,还有那些讨厌的<=>符号。

在冲突未解决前,试图提交代码是确定会失败的:

$ svn ci -m ”

svn: 提交失败(细节以下):

svn: 提交终止: “/path/to/svntest/a.txt” 处于冲突状态



转自:http://blog.sina.com.cn/s/blog_75991d43010157bz.html以前都是在windows上操做SVN来着,转移到linux上以后出现冲突,后查了解决办法:

ZZ from:http://www.aixchina.net/club/thread-25902-1-1.html
这里,先说说冲突解决。

怎么会发生冲突呢?

两我的修改了不一样文件?不会有冲突,他们不相关。

两我的同时修改了同一个文件的不一样位置?不会有冲突,SVN很聪明。

两我的同时修改了同一个文件的相同位置?Bing!冲突来了。

工程师A修改了a.txt的第一行,提交了。

工程师B也修改了a.txt的第一行,而后执行svn up,这时SVN提示了:(如下,你开始扮演工程师B的角色了)
$ svn up
在 “a.txt” 中发现冲突。
选择: (p) 推迟,(df) 显示所有差别,(e) 编辑,
(mc) 个人版本, (tc) 他人的版本,
(s) 显示所有选项:

我通常选择p(推迟),即引入冲突到本地,不过不会影响到SVN服务器端,能够放心。

OK,开始解决冲突了。

这时,会生成几个文件:

a.txt 
html

 a.txt.mine  a.txt.r6328  a.txt.r6336

其中a.txt中包含了工程师A、B的全部修改,以<<<<<<<、=======、>>>>>>>分隔。

a.txt.mine是工程师B的修改,也就是未update前的a.txt。

a.txt.r6328 是工程师A提交前的版本,即未致使冲突的版本。

a.txt.r6336是工程师A提交后的版本,即致使冲突的版本。

通常,查看a.txt就能够看到冲突的详情了:

[yicheng@chengyi svntest]$ cat a.txt

<<<<<<< .mine

i also modify ,agndagnagasdg;

=======

i modify this line;

>>>>>>> .r6336

以上,<<<<<<<.mine和=======之间是工程师B(当前的“你”)修改的内容,=======与>>>>>>>.r6336之间是工程师A修改的内容。这时,最好的办法是,叫上工程师A,大家一块儿肯定这些修改是否都须要,是否相互兼容,而后留下须要的部分,删 除<<<<<<<.mine、=======和>>>>>>>.r6336。

而后,测试,测试!肯定没问题以后,就能够告诉SVN,你解决冲突了:

svn resolve –accept working a.txt (该命令会删除a.txt.mine  a.txt.r6328  a.txt.r6336)

svn ci -m ’some comment’ a.txt

这里须要注意的是,a.txt.mine  a.txt.r6328  a.txt.r6336这几个文件的存在表明着有冲突产生。若是不解决冲突,就手 工删除它们,SVN服务器也会很傻的认为你解决了冲突,容许你继续以后 的工做。可是,冲突依旧存在,你的a.txt中不但有别人的修改,还有那些讨厌的<=>符号。

在冲突未解决前,试图提交代码是确定会失败的:

$ svn ci -m ”

svn: 提交失败(细节以下):

svn: 提交终止: “/path/to/svntest/a.txt” 处于冲突状态
 
转自:http://blog.sina.com.cn/s/blog_75991d43010157bz.html
相关文章
相关标签/搜索