SVN版本冲突解决办法(非加锁)

版本冲突原因:

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

解决办法:

冲突有三种解决办法:

A、放弃自己的更新,使用svn revert(回滚),然后提交。在这种方式下不需要使用svn resolved(解决)

 

B、放弃自己的更新,使用别人的更新。使用最新获取的版本覆盖目标文件,执行resolved filename并提交(选择文件—右键—解决)。

 

C、手动解决:冲突发生时,通过和其他用户沟通之后,手动更新目标文件。然后执行resolved filename来解除冲突,最后提交。

推荐C解决办法,下面是解决步骤:

①在当前目录下执行“update操作

②在冲突的文件上(右键—TortoiseSVN—Edit conflicts(解决冲突,则出现如下图:

 

Theirs窗口为服务器上当前最新版本

Mine窗口为本地修改后的版本

Merged窗口为合并后的文件内容显示

③  如果要使用服务器版本,在Theirs窗口选中差异内容,右键,选择Use this text block(使用这段文本块)。

同理如果要使用本地版本,在Mine窗口右键,选择Use this text block(使用这段文本块)。注意看Merged窗口里的内容

④修改完成后保存文件。

⑤在a3用户的冲突目录下,选中文件--右键菜单—TortoiseSVN—Resolved(解决)。会列出冲突的文件列表,如果确认已经解决,点OK。

如何降低冲突解决的复杂度:

1、当文档编辑完成后,尽快提交,频繁的提交/更新可以降低在冲突发生的概率,以及发生时解决冲突的复杂度。

2、在提交时,写上明确的message,方便以后查找用户更新的原因,毕竟随着时间的推移,对当初更新的原因有可能会遗忘

3、养成良好的使用习惯,使用SVN时每次都是先提交,后更新。每天早上打开后,首先要从版本库获取最新版本。每天下班前必须将已经编辑过的文档都提交到版本库。

posted @ 2012-08-03 11:36  呼啸而过  阅读(2790)  评论(0编辑  收藏  举报