博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SVN版本冲突解决详解
阅读量:7112 次
发布时间:2019-06-28

本文共 1541 字,大约阅读时间需要 5 分钟。

hot3.png

版本冲突原因:

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

版本冲突现象:

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

假设文件名是kingtuns.txt

对应的文件名分别是:

kingtuns.txt.r101

kingtuns.txt.r102

kingtuns.txt.mine

kingtuns.txt。同时在目标文件中标记来自不同用户的更改。

版本冲突解决:

场景:

1、现在A、B两个用户都更新kingtuns.txt文件到本地。

1

2、文档中原始文件内容如下:

2

3、A用户修改文件,添加内容“A用户修改内容”完成后提交到服务器

3

4

4、B用户修改文件,添加内容“B用户修改内容”完成后提交到服务器

5

B用户提交更新至服务器时提示如下:

6

B用户将文件提交至服务器时,提示版本过期:首先应该从版本库更新版本,然后去解决冲突,冲突解决后要执行svn resolved(解决),然后在签入到版本库。在冲突解决之后,需要使用svn resolved(解决)来告诉subversion冲突解决,这样才能提交更新。

解决冲突有三种选择:

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

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

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

解决步骤如下:

1、 在当前目录下执行“update”(更新)操作

7

2、 在冲突的文件上(选中文件--右键菜单—TortoiseSVN—Edit conflicts(解决冲突)),出现如下窗口

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

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

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

8

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

同理如果要使用本地版本,在协商后,在Mine窗口右键,选择Use this text block(使用这段文本块)。

9

4、 修改完成后,保存kingtuns.txt文件内容。

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

10

6、 冲突解决

11

7、提交解决冲突后的文件。

12

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

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

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

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

转载于:https://my.oschina.net/mavericsoung/blog/116176

你可能感兴趣的文章
Word 2003从入门到精通第4讲(表格)
查看>>
docker容器故障致无法启动解决实例
查看>>
mysql数据库Too many connections报错排查
查看>>
移動型VR
查看>>
254个VIP时脚本生成keepalived.conf配置文件
查看>>
三种东西永远不要放到数据库里
查看>>
Xwindow System
查看>>
直播疑难杂症排查(9)— 拖动不准
查看>>
搭建基于用户密码认证的Open***
查看>>
精通MVC3摘译(3)-自定义路由系统
查看>>
LINUX下WEBLOGIC卸载
查看>>
Android第三十三期 - Dialog的应用
查看>>
[QTP] 描述性编程
查看>>
php 启动报错
查看>>
解决SecureCRT连接GNS3时SecureCRT标签窗口同名的问题
查看>>
AWS - 通过Snapshot 还原 EC2实例的一些问题
查看>>
小品Linux文件时间
查看>>
Windows10-AzureAD的支持,云的落地
查看>>
iOS开发那些事-移动平台架构设计
查看>>
【Hibernate框架开发之五】Hibernate对象的三种状态&Session常用方法
查看>>