日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(转) 对svn分支合并类型和深度的理解

發(fā)布時間:2024/4/13 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (转) 对svn分支合并类型和深度的理解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

合并的工作是把主干或者分支上合并范圍內(nèi)的所有改動列出,并對比當(dāng)前工作副本的內(nèi)容,由合并者手工修改沖突,然后提交到服務(wù)器的相應(yīng)目錄里。如果當(dāng)前工作副本是主干,則合并的范圍是分支上的改動,如果工作副本是分支的,則合并范圍是主干上的改動,并且一定要注意,合并的起始位置URL一定要和當(dāng)前的工作副本的URL是相同的。

一、合并一個范圍的版本

??? 此類型應(yīng)用最為廣泛,主要是把分支中的修改合并到主干上來。在主干上點擊右鍵選擇合并,然后選擇合并類型:合并一個范圍的版本。合并的源URL填寫的是要合并的分支的URL,待合并的版本范圍如果為空,則指的是合并分支上所有的版本,即自從分支創(chuàng)建以來到分支當(dāng)前最新版本的所有演變。如果只是選擇其中一個版本,或者幾個版本,那么就表示只是將制定的n個版本的變化合并到主干上。如果只是選擇其中一個版本,那么表示只是選擇那個版本的修改,之前或之后的修改將不被采納。

二、復(fù)興合并

??? 復(fù)興合并可以理解為是第一種合并類型的一種特例,在復(fù)興合并中,主干可以理解為是自從開創(chuàng)分支之后沒有任何修改,而分支是經(jīng)過修改的,而且合并中分支是沒有版本選擇的。經(jīng)過復(fù)興合并,分支中所有的修改都會合并到主干中,合并的結(jié)果將使得分支和主干一模一樣,從而可以刪除分支。

三、合并兩個不同的樹

??? 此類型與前兩種類型不同,第一種類型可以選擇分支合并的版本,主干不能選擇版本;第二種類型是主干和分支都不能選擇合并的版本;而這種類型則是無論是主干還是分支都可以選擇合并的版本,即可以選擇過去的一個主干版本與分支的某個版本進行合并。合并的時候以選擇的分支版本為主,如果選擇的主干版本與分支版本有不同的地方,合并時主干部分將被放棄。

起始URL:選擇主干目錄的URL(應(yīng)當(dāng)和當(dāng)前工作副本的URL一致,這個是所謂的合并點)

結(jié)束URL:選擇要合并的分支的URL。

起始和結(jié)束的版本:一般起始版本應(yīng)當(dāng)找到最后一次同步時的版本,如果從沒有同步過(第一次合并),則選擇創(chuàng)建分支時的版本,結(jié)束版本一般是最新版本,如果你不想將某些內(nèi)容合并進主干的話,也可以選擇一個合并點。

實例:

主干A在95版本的時候創(chuàng)建分支B,此時兩棵樹都是95版本

1、 我在分支B上增加文件test.txt,提交。此時版本庫升級到了96版本;

2、 我在A上選擇合并類型1,合并分支最新版本,結(jié)果是把test.txt加入A;

3、 我在A上選擇合并類型2,合并分支最新版本,結(jié)果同上;

4、 我在A上選擇合并類型3,合并分支最新版本,結(jié)果同上;

5、 我在A上增加文件test2.txt,提交,此時版本庫升級到了97版本;

6、 我在A上選擇合并類型1,合并分支最新版本,結(jié)果是把test.txt加入A;

7、 我在A上選擇合并類型2,合并分支最新版本,結(jié)果是把test.txt加入A;

8、 我在A上選擇合并類型3,主干選擇當(dāng)前97版本,合并分支最新版本,結(jié)果是把test.txt加入A,把test2.txt從A刪除;

9、 我在A上選擇合并類型3,主干97以前的版本,合并分支最新版本,結(jié)果是把test.txt加入A,而A中保留著test2.txt。

??? 將分支合并到主干上,首先需要在主干的工作副本下進行,合并的范圍是從主干的上次合并的版本開始到分支上最新的版本結(jié)束,如果是第一次合并,則從主干創(chuàng)建分支的版本開始,所以每次合并要做好說明,在日志中體現(xiàn),不然忘記了下次再合并就有點麻煩。其實,應(yīng)當(dāng)盡量避免一個分支合并多次,分支的作用一般為了解決bug,一旦bug對應(yīng)結(jié)束了,分支的使命就結(jié)束了,以后再出現(xiàn)其他的問題,應(yīng)當(dāng)重新建立分支,這樣就不會出現(xiàn)多次合并的問題了。

?

分支的合并深度

合并深度:

一、工作副本:即你當(dāng)前的工作目錄,一般默認為這個選項;

二、全遞歸:即你選擇的目錄的版本庫,包括了其下面的子文件,子文件夾,包括子文件夾里面的內(nèi)容;

三、直接子節(jié)點,包括文件夾:即你選擇的目錄下面的文件,文件夾,但是不包括文件夾里面的子文件,子文件夾;

四、僅文件子節(jié)點:即你選擇的目錄下面的文件,但不包括文件夾,當(dāng)然不包括的文件夾下面的所有內(nèi)容也都不納入合并范圍;

五、僅此項:沒有任何合并內(nèi)容。

實例:

1、主干test文件夾下面有text.txt文件,把test文件夾創(chuàng)建分支test2

2、在test2文件夾下面增加test21文件夾,在test21文件夾下面增加文件夾test211,在test211文件夾下面增加文件test211.txt;修改test2文件夾下面的文件test.txt,增加文件test2.txt。提交

3、右鍵test文件夾合并test2文件夾,選擇工作副本。則test文件夾中原先的test.txt文件則顯示修改狀態(tài),test2.txt文件顯示新增狀態(tài),文件夾test21和test211以及里面的test211.txt文件都顯示為新增狀態(tài)。選擇將test文件夾svn還原,則新增狀態(tài)下的文件夾或者文件顯示為無版本控制狀態(tài),原先的test.txt還原為常規(guī)常態(tài)。

4、右鍵test文件夾合并test2文件夾,選擇全遞歸,結(jié)果和3一樣。但是我們之前的test文件夾和倉庫上的test的內(nèi)容是一致的,如果不一致,那么選全遞歸,是已倉庫版本為標準。選工作副本,顧名思義,則以你本地的工作副本文件為主,分支上有而工作副本中沒有的文件夾或文件則不進行比較合并。

5、右鍵test文件夾合并test2文件夾,選擇直接子節(jié)點,包含文件夾。則test文件夾中原先的test.txt文件顯示為修改狀態(tài),test2.txt文件顯示為新增狀態(tài),test21文件夾顯示為新增狀態(tài),但是其里面內(nèi)容則為空,那么就證明了分支中test21文件夾以下的內(nèi)容并沒有合并到主干test中來,合并行為只是選取了當(dāng)前目錄。選擇將test文件夾svn還原,則新增狀態(tài)下的文件夾或者文件顯示為無版本控制狀態(tài),原先的test.txt還原為常規(guī)狀態(tài)。

6、右鍵test文件夾合并test2文件夾,選擇僅文件子節(jié)點。則test文件夾中原先的test.txt文件顯示為修改狀態(tài),test2.txt文件顯示為新增狀態(tài),分支test2中的test21文件夾沒有合并到test中來。選擇將test文件夾svn還原,則新增狀態(tài)下的文件顯示為無版本控制狀態(tài),原先的test.txt還原為常規(guī)狀態(tài)。

7、右鍵test文件夾合并test2文件夾,選擇僅此項。則test文件夾顯示為修改狀態(tài),但是內(nèi)容沒有任何改動。將test文件夾svn還原,則該文件夾顯示為常規(guī)狀態(tài)。

只記錄合并(阻止這些版本將來被合并)

??? 選擇此項意味著并沒有實際的合并動作,只是在將來的合并過程中,svn將過濾掉此版本的修改動作。例如,我在合并的過程中,選擇對分支的23版本只記錄合并(阻止這個版本將來被合并),那么23版本并不會合并到主干中。在以后的合并中,如果選擇合并分支的22到24版本,那么23版本將被忽略,我們也可以看到,在選擇版本的對話框上,23版本的字體是灰色的。所以要慎重使用這個選項,一旦使用了,那么表示這個版本在以后的合并中就不能再使用了。

??? 忽略祖先:如果在分支上有一個文件曾經(jīng)被刪除過,后來又加了一個同文件名的文件,那么在merge的時候svn會識別到這兩個文件不是同一個祖先而直接覆蓋舊文件增加新文件。而實際上我是要對這兩個不同祖先的文件進行合并的,這個時候就需要使用svn merge --ignore-ancestry 忽略祖先來進行合并才能保證正確。

實例:

1、 將主干test創(chuàng)建分支test1;

2、 將test1文件夾下的test.txt文件刪除,提交;

3、 在test1下創(chuàng)建文件test.txt,提交;

4、 將test1合并到主干test,如果默認選擇,則提示將test1中的test.txt文件替換test文件夾中的test.txt文件;如果選擇了忽略祖先,那么系統(tǒng)將把兩個test.txt作比較,必要時提示沖突。

carriage return是一個符號(指回車符號CR),而一般在代碼文件或文體文件里(WINDOWS下)里換行是CR和LF(即\r\n或十六進制碼0D 0A),而你行中只有CR,所以將要加一個LF(即OA)。說得很明確了,其實LF就是line feed的簡寫。whitespace包括line feeds, tabs, spaces, and carriage returns。

轉(zhuǎn)自:對svn分支合并類型和深度的理解

轉(zhuǎn)載于:https://www.cnblogs.com/woaixingxing/p/11076051.html

總結(jié)

以上是生活随笔為你收集整理的(转) 对svn分支合并类型和深度的理解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。