`
king_tt
  • 浏览: 2228585 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

SVN版本冲突解决详解

 
阅读更多

版本冲突原因:

假设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时每次都是先提交,后更新。每天早上打开后,首先要从版本库获取最新版本。每天下班前必须将已经编辑过的文档都提交到版本库。


转载自:http://blog.csdn.net/windone0109/article/details/4857044

分享到:
评论

相关推荐

    Tortoise SVN 版本冲突处理

    ### Tortoise SVN 版本冲突处理详解 在软件开发项目中,版本控制是不可或缺的一环,它帮助团队成员管理代码的变更,确保项目的稳定性和可追溯性。Tortoise SVN作为一款优秀的图形化Subversion(SVN)客户端,广泛...

    开源版本控制SVN 树冲突、目录丢失问题及解决机制探讨

    **版本控制系统SVN详解与树冲突、目录丢失问题解析** 版本控制系统Subversion(简称SVN)是一种用于管理软件源代码的工具,它允许开发者在不同的时间点保存项目的状态,以便于回溯、合并和协作。当多人同时编辑同一...

    svn 合并、冲突及常用功能详解

    **svn冲突** 1. **冲突产生**: 当两个或更多用户修改了同一份文件的同一部分时,svn无法确定应保留哪个更改,就会产生冲突。 2. **冲突标记**: 有冲突的文件会被svn添加特殊的冲突标记,例如`, `=======`, `>>>>>>...

    SVN版本管理详解-08210246.pdf

    为了防止错误的更改,SVN提供了解决冲突的机制,并允许撤销错误的修改。 分支与合并是版本管理中的高级功能。在SVN中,分支用来创建项目的不同线性历史记录,它们允许在不影响主线(主分支)的情况下独立开发新特性...

    svnsvnsvnsvn

    总之,SVN是一个强大的版本控制系统,它简化了多个人协作开发的复杂性,提供了版本历史跟踪,冲突解决,分支和标签管理等功能。了解并熟练掌握SVN的使用,对于任何开发团队来说都是提高生产力和协作效率的关键。

    SVN版本控制安装详解(内含客户端)

    4. 合并(Merge):当多个用户同时修改同一份代码时,合并功能可以帮助解决冲突,将不同版本的更改整合在一起。 5. 解决冲突:在合并过程中,如果发现冲突,TortoiseSVN会标识出冲突文件,你需要手动解决冲突后再...

    SVN版本控制工具使用详解

    SVN版本控制工具使用详解 SVN(Subversion)是一种自由开源的版本控制系统,可以将代码恢复到早期版本,或者检查数据修改的历史,这些数据可以是源代码,也可以是其他类型的文件。其功能包括根据文件修改的次数自动...

    最新SVN版本控制带汉化

    ** SVN(Subversion)版本控制系统详解 ** SVN,全称Subversion,是一种广泛使用的集中式版本控制系统,它能够管理项目中的源代码、文档等文件的版本,使得多个开发者可以协同工作并跟踪每一次修改,有效地避免了...

    svn ( 解决冲突 )confict

    ### SVN解决冲突详解 #### 一、冲突发生的原因 在版本控制系统中,Subversion(简称SVN)是一种广泛使用的集中式版本控制系统。当多个开发者同时对同一个文件进行修改时,可能会遇到冲突的情况。例如,假设团队中...

    SVN(版本控制工具)基本操作

    TortoiseSVN会标记冲突文件,用户需手动解决冲突,可以选择接受本地版本、仓库版本,或手动合并。 10. **分支与合并(Branching & Merging)** 分支允许团队在不影响主线开发的情况下进行实验性开发。创建分支后,...

    SVN 的使用方法详解

    通过SVN,用户可以记录项目的历史版本,便于恢复旧版本、管理多人协作开发时的代码冲突,以及实现团队间的文件同步。 TortoiseSVN是SVN的一个图形化客户端,专为Windows用户设计。它的安装过程包括: 1. 访问...

    SVN版本控制方案

    ### SVN版本控制方案详解 #### 一、SVN版本控制系统概述 版本控制系统是软件开发过程中不可或缺的一部分,它帮助团队管理代码的变化历史,确保代码的稳定性和可追溯性。Subversion(SVN)作为一款集中式的版本控制...

    SVN 分支与合并详解

    解决冲突后,使用`svn resolved`标记文件已解决冲突,最后提交更新。 6. 使用标签(Tag): 除了分支,SVN还支持标签(Tag),用于标记特定版本的代码,如发布版本。标签是只读的,通常不进行修改。创建标签的方式...

    svn版本管理

    ** SVN 版本管理系统详解 ** SVN,全称Subversion,是一款开源的版本控制系统,用于管理和跟踪项目源代码的变化。在软件开发过程中,SVN扮演着至关重要的角色,它帮助团队成员协作开发,同步代码,回溯历史版本,...

    svn中文手册-版本控制

    ** SVN中文手册 - 版本控制系统详解 ** SVN(Subversion)是一种广泛使用的开源版本控制系统,用于管理软件项目的源代码和其他文件。它允许开发者在项目开发过程中跟踪和记录文件的更改,支持多人协作,避免冲突,...

Global site tag (gtag.js) - Google Analytics