svn conflict

时间:2021-03-08 13:08:20

安装svn

apt-get install subversion

  

当前两个人都更新版本为version1

A修改了monitor.txt文件 提交后版本为version2

B也修改了monitor.txt文件,提交后提示冲突,update后出现:

root@test61:/tmp/testsvn/switches# svn update
Conflict discovered in 'monitor.txt'.
Select: (p) postpone, (df) diff-full, (e) edit,
(mc) mine-conflict, (tc) theirs-conflict,
(s) show all options:
postpone 的意思是暂时推后处理,我可能要和那个和我冲突的家伙商量一番。 
diff-full,则是比比看,到底什么地方冲突了。
edit,修改冲突合并的文件。
mc,这个霸道,直接用我的。
tc , 底气不足,还是用别人修改的吧。

所以,一般是先选择p,然后发现会多几个文件,有1版本的,有2版本的,还有自己版本的,所以这时候就和A去协商下怎么改好吧。。。

然后选择还不能提交,svn st会发现monitor.txt提示是C  ,这时候需要先使用resolve命令来说明怎么解决冲突

$svn resolve --accept working reademe.txt

svn resolve 是解决冲突的命令。解决的方法由--accept 选项决定。
base 恢复到冲突前的一个版本。
mine-full 恢复到以我的修改为主的版本
their-full 恢复到库中最新版本
working 手动解决

所以这里先用命令  svn resolve --accept working monitor.txt  然后就去修改monitor.txt,然后再commit就 ok了,当然之前生成的多余的文件也没有了。

root@test61:/tmp/testsvn/switches# svn commit -m "fix svn conflict test"                 还没有resolve就提交会报错
svn: Commit failed (details follow):
svn: Aborting commit: '/tmp/testsvn/switches/monitor.txt' remains in conflict
root@test61:/tmp/testsvn/switches# svn resolve --accept working monitor.txt 先resolve说明手动解决
Resolved conflicted state of 'monitor.txt'
root@test61:/tmp/testsvn/switches# svn commit -m "fix svn conflict test" 提交成功
Sending monitor.txt
Transmitting file data .
Committed revision 15451.

 

如果是选择edit,也需要resolved(注意这里是和resovle不同的命令!)才能结束conflict,这时候任然处于没有提交的状态,直接提交就可以了。

如果是windows就直接会自动用p命令,然后自己去搞吧