SVN与TortoiseSVN实战:冲突详解(一)

硬广:《SVN与TortoiseSVN实战》系列已经写了三篇,第一篇《SVN与TortoiseSVN实战:从入门到精通》,第二篇《SVN与TortoiseSVN实战:标签与分支》和第三篇《SVN与TortoiseSVN实战:TortoiseSVN新建及合并分支》重点介绍了标签和分支的概念及实际操作演示。

在写到SVN分支合并时,有评论中也提到合并后发生冲突的问题,相信关于冲突的知识也是开发人员的痛点。

关于冲突的知识,重点介绍以下几个方面:

1、什么情况会产生冲突?

2、冲突发生时产生的三个文件是什么含义?

3、怎样使用TortoiseSVN解决冲突?

什么情况会产生冲突?



当我第一次使用SVN这类项目管理工具时,心中就有一个疑问:多个人同时编辑一个文件会发生什么情况?

为了模拟这种情况,我通过使用另外一个账号签出上一篇中的项目,来模拟多个用户同时操作的情况(在TortoiseSVN的设置对话框里通过Saved Data可以删除保存的账号信息以便重新登录)。

现在test目录中新建一个测试文本文件,输入以下内容并签入,然后签出到testother目录中:

1
2
3
4
5
6

首先编辑test目录中的测试文本文件,把第一行的1改为11,保存后签入到SVN:

11
2
3
4
5
6

现在编辑testother目录中的测试文本文件,把最后一行6改为66,保存后签入到SVN:

1
2
3
4
5
66

在签入testother的修改时,会提示我们该文件已过期,需要首先签出最新版本:

当我们签出后TortoiseSVN会提示让我们再次尝试签入,这次签入会成功,在这个过程中没有发生冲突,testother目录中的测试文本文件的内容为:

11
2
3
4
5
66

可以看到内容自动合并了来自两个目录下的修改,那什么情况下会产生让人头疼的冲突呢?

上面的操作之所以没有产生冲突,是因为两个目录中对文件内容的修改没有在同一个位置,如果在testother目录中对第一行进行修改(比如不修改6,而把1改为111),就会产生冲突。

可能有人看到这里就会想到以下这种情况,还是在test目录中修改1为11:

11
2
3
4
5
6

在testother中的第一行前新建一行,修改为:

0
1
2
3
4
5
6

这种情况会产生冲突吗?

结果是:会。

这是因为SVN并没有那么智能,认为你是新建了一行,SVN对于冲突的判断关键在于对相同位置上内容的修改,所以当你新建一行时就改动了所有后边的位置。

了解了这些大家基本对SVN冲突产生的原理应该认识的非常透彻了。

关于冲突的其他几个问题稍后讲解,一篇没有办法写的太详细。



记录,为更好的自己!

时间: 2024-10-12 20:31:50

SVN与TortoiseSVN实战:冲突详解(一)的相关文章

SVN与TortoiseSVN实战:冲突详解(二)

硬广:<SVN与TortoiseSVN实战>系列已经写了四篇,第二篇<SVN与TortoiseSVN实战:标签与分支>和第三篇<SVN与TortoiseSVN实战:TortoiseSVN新建及合并分支>重点介绍了标签和分支的概念及实际操作演示,关注人数较多. 上一篇提到关于冲突的知识,其中已经说明了第1点: 1.什么情况会产生冲突? 2.冲突发生时产生的三个文件是什么含义? 3.怎样使用TortoiseSVN解决冲突? SVN是根据同时对相同位置上内容的修改来判断冲突的

SVN与TortoiseSVN实战:补丁详解

硬广:<SVN与TortoiseSVN实战>系列已经写了五篇,第二篇<SVN与TortoiseSVN实战:标签与分支>和第三篇<SVN与TortoiseSVN实战:TortoiseSVN新建及合并分支>重点介绍了标签和分支的概念及实际操作演示,关注人数较多,三.四篇<SVN与TortoiseSVN实战:冲突详解(二)>详解了SVN如何判定冲突及冲突文件说明和解决冲突方法. 本篇详细SVN中补丁的概念,版本控制之道这本书对于SVN的讲解比较全面了,但书中也没有

SVN与TortoiseSVN实战:文件加锁详解

硬广:<SVN与TortoiseSVN实战>系列已经写了八篇,本篇是完结篇,整个系列结合TortoiseSVN对SVN中容易被忽视的部分进行了详解,以技巧性为主. 本篇详解使用TortoiseSVN对文件进行加锁和解锁的技巧,其中涉及到了之前介绍的SVN属性知识,关于属性可以翻看<SVN与TortoiseSVN实战:属性的奇技淫巧(一)>.<SVN与TortoiseSVN实战:属性的奇技淫巧(二)>. 加锁与解锁的操作对于项目中的二进制文件,如图片.声音.动态库等不可合

Unity 3D 实战核心技术详解 书籍出版

经过半年的努力,处女作<Unity 3D 实战核心技术详解>终于问世了,购买网址: http://www.broadview.com.cn/article/70 在12月5日到12日期间,在打折的基础上优惠,书籍内容全是干货,购买方式:可以查看网页中的"如何购买".

SVN与TortoiseSVN实战:TortoiseSVN新建及合并分支

硬广:<SVN与TortoiseSVN实战>系列已经写了两篇,第一篇<SVN与TortoiseSVN实战:从入门到精通>,关于分支和标签的知识介绍可翻阅第二篇<SVN与TortoiseSVN实战:标签与分支>,本篇重点通过例子讲解TortoiseSVN新建及合并分支的实际操作. 先提示一下,网上大部分关于分支合并的讲解都是错的,对于其他资料请谨慎,本文本着科学严谨的精神,确保讲解正确. 我这里已经新建好一个SVN项目仓库,并按照第二篇介绍的标准项目仓库的目录结构新建好t

CSS3新增属性text-overflow(省略符)实战开发详解

有人会问,为什么我把text-overflow拿出来单独讲解.以前,当一行内容显示不完整的时候,想要显示省略符,需要通过javascript等手段. 但是CSS3引入了text-overflow省略符属性,只需要短短一行代码就可以实现,开发方式的简洁强大不言而喻. 这篇文章,我讲带领大家做一个<今日头条>新闻导航列表,带领大家领略text-overfow的强大魅力.先看一下效果: 好了,看完了效果,现在正式开始今天的开发旅程吧! 首先我们先创建html页面,代码如下所示(红色文字即是我们Dem

CSS3属性text-overflow(省略符)实战开发详解

先看一下效果: 好了,看完了效果,现在正式开始今天的开发旅程吧! 首先我们先创建html页面,代码如下所示(红色文字即是我们Demo的主要内容): <!DOCTYPE html> <html> <head> <meta charset=”utf-8″> <link rel=”stylesheet” href=”styles.css”> <title>text-overflow 实例详解</title> </head&

SVN与TortoiseSVN实战:标签与分支

最近在写<IOS性能调优系列>,今天偷个懒,写写SVN与TortoiseSVN实战的第二篇,标签与分支. 第一篇详见<SVN与TortoiseSVN实战:从入门到精通> SVN与TortoiseSVN实战系列中很多知识点来源于<版本控制之道>这本书,我写的内容主要结合了TortoiseSVN工具,更多侧重于实际操作. 很多项目人员没有正确运用SVN,仅仅作为源代码的团队共享来用,而没有充分利用标签.分支这些强大的特性. 要正确使用SVN的标签和分支特性,就要先建立起合理

ARP缓存表的构成ARP协议全面实战协议详解、攻击与防御

ARP缓存表的构成ARP协议全面实战协议详解.攻击与防御 1.4.3  ARP缓存表的构成 在局域网的任何一台主机中,都有一个ARP缓存表.该缓存表中保存中多个ARP条目.每个ARP条目都是由一个IP地址和一个对应的MAC地址组成.这样多个ARP条目就组成了一个ARP缓存表.当某台主机向局域网中另外的主机发送数据的时候,会根据ARP缓存表里的对应关系进行发送本文选自ARP协议全面实战手册——协议详解.攻击与防御. 1.查看ARP缓存记录本文选自ARP协议全面实战手册——协议详解.攻击与防御 [实