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

2021-05-26 19:03:44 字數 1420 閱讀 6667

前言:

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中都新加了乙個配置項引起的,有趣的是下面兩個現象。

branch1中的檔案進行一下修改,刪除乙個空行,再合併,成功了。。。

合併結果:

branch1中的檔案進行一下修改,刪除兩個空行,合併,也成功了。。。

合併結果:

先來看下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行,所以也不會衝突。

分支合併的時候不僅僅要關注c的,對g的最好也看一下,不然svn"智慧型"幫你組出來的東西不一定是你想要的。

很有趣的ZOJ

是不是zoj不能新增注釋的啊?很奇怪。這是1057的ac include stdio.h include math.h int main else printf a has d points.b has d points.n aa,bb return 0 新增一行注釋之後 include stdio...

娛樂向 有趣的東西

朋友們好啊 我是渾元形意卡常門掌門人zxy。剛才有個朋友問我周老師發生腎莫事了,我說怎麼回事,給我發了一幾張截圖,我一看!嗷!原來是昨天,有兩個同學,十多歲,乙個國家隊長,5十多公斤,乙個暴力戰神,6十多公斤 他們說,唉 有乙個說是我在機房練樹套樹卡常卡不過了了,周老師你能不能教教我渾元 哎 幫助a...

很有趣的閒話 2020提前的夏天

在2020.1.20那天也許吧,知道公司放假的安排後,我就基本已經預計好了後面的安排,包括離職和畢設時間,當然這2個並不是這次閒話要說的主要內容。那幾天吃飯的時候還在調侃武漢的事情,沒想到現在這麼嚴重了,導致整個計畫全部崩了,現在有點迷茫,先甜後苦,現在在甜這裡呆的太久了。想到有時候你以為的計畫,也...