svn中很有趣的东西(不要忽视空格和空行的力量)

本文通过实例分析了svn在处理分支合并时对于空格和空行的敏感性,揭示了在branch1和branch2的合并过程中,空行的增减如何导致不同的合并结果,提醒开发者注意svn的这种特性,以免出现意外的合并情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

1. svn分支合并的常见状态
U:更新(本地无修改,合并过来的分支有修改)
G:合并(本地有修改,合并过来的分支也有修改,不过可以通过svn内定规则合并到一起)
C:冲突(本地有修改,合并过来的分支也有修改,svn内定规则无法合并)
2. svn处理以行为基本单位

内容看着挺长,不过多数是图片,感兴趣可以看下,哈哈!


现象描述



首先来看一个文件的主干代码如下:

关注一下最后一个bean是wangwangMessageDAO(第29行),然后是一个空行(第30行),然后是beans的结束(第31行)



从主干上面拉了两个分支进行开发,分别叫做branch1和branch2,先来看branch1修改后的代码:

branch1在将第29行的bean进行了修改(这个不是这次主要分析的地方),然后在下面加入了一个bean(这个东西是重点)



再来看下branch2中对代码的修改

branch2在第29行的bean下面也新加了一个bean



branch1合并branch2,很明显,冲突了

冲突原因分析:首先branch1修改了第29行,但是branch2没有对29行进行任何修改,所以这里不会引起冲突,所以冲突只可能是因为两个branch中都新加了一个配置项引起的,有趣的是下面两个现象。

C    aliadmin-web/src/main/webapp/META-INF/autoconf/biz-dao.xml.vm

branch1中的文件进行一下修改,删除一个空行,再合并,成功了。。。


合并结果:

 G    aliadmin-web/src/main/webapp/META-INF/autoconf/biz-dao.xml.vm

branch1中的文件进行一下修改,删除两个空行,合并,也成功了。。。


合并结果:

G    aliadmin-web/src/main/webapp/META-INF/autoconf/biz-dao.xml.vm


现象分析(简单的方式可以通过乌龟来看一下)


先来看下branch1最初修改的svn描述

文件的修改被认为是29行就行了删除又新增的操作(也就是修改啦),然后在30行(空行)和31行(结束行)之间新增了信息 


再来看下branch2修改的svn描述

文件的修改被认为是在30行和31行之间新增了信息


同样是在30行和31行之间新增了信息,所以冲突

再来看下branch2删除一个空行后修改的svn描述

修改后的文件的第31行的空行被认为是基础文件的第30行的空行,这样一来就是在原来文件29行和30行之间新增了一行


这样一来branch1是在30行和31行之间新增了东西,而branch2是在29行和30行之间新增了一行,所以不会冲突。
再来看下branch2删除两个空行后修改的svn描述

 去掉两个空行之后,svn认为第30行被修改为了新的内容


branch1是在30行和31行之间新增,而branch2是修改了第30行,所以也不会冲突。


一个感叹:svn对空格很"敏感"




想说明的东西


分支合并的时候不仅仅要关注C的,对G的最好也看一下,不然svn"智能"帮你组出来的东西不一定是你想要的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值