svn 合併與分支

SVN倉庫中取出代碼時,一定不要把整個倉庫取出來,而應該只取出trunk主目錄,或只取出branch下的某個分支目錄。

一個項目會有多個人共同合作開發完成。基本流程是:

1. 各開發團隊(以市、區爲單位)建立自己的分支,並在此分支上開發;

2. 各開發成員把分支合併到主幹上並形成較爲穩定的版本;

3. 各個成員重新從主幹上建立新的分支,在此分支上開發(即回到第一步)

4.循環往復,直到工程結束。

分支與合併

分支的基本概念就正如它的名字,開發的一條線獨立於另一條線,如果回顧歷史,可以發現兩條線分享共同的歷史,一個分支總是從一個備份開始的,從那裏開始,發展自己獨有的歷史(如下圖所示) 

 

⑴創建分支 
假設目前我們版本庫中的項目的佈局如下圖: 

 

如圖所示,我們的項目放在了trunk(主線)目錄,另外還有branch(分支)tags(標籤)目錄,這樣的佈局是爲了更清晰的區別主線、分支和標籤三者的位置。

subversion對分支和標籤是通過複製一份最新的版本庫的快照來實現的。

開始創建分支:在我們CheckOut的主線目錄(trunk)上,右鍵點擊然後選擇“Branch/tag…” 


在彈出的窗口中,將To Url 指向branch目錄並輸入分支的具體目錄名,這裏是mybranch1.0,我們即將創建的分支便存放於此處,點擊OK 

Update一下本地的branch目錄,你就可以看到你剛剛創建的分支“mybranch1.0”,這樣一來我們的分支就創建完成了。 

創建分支的最大的目的就是跟主線進行並行開發的時候不影響主線的開發。 
因爲你在分支上所做的提交都只存於分支上,主線上的Update是看不到分支的修改的。如下圖所示,trunk只能看到r344的版本,並看不到r343的版本。 

(什麼時候應該使用分支呢?例如你接到了一個任務,完成這個任務需要三四個人的合作,你們之間需要共享資源,那們就可以創建一個專爲這次任務的分支,參與此次任務的人員則在分支上做開發,等完成之後再合併到主線上,纔不會出現將實現了一半的不完成功能也提交到主線上,影響主線的正常工作。又或者自己需要一個較長的開發週期來完成任務,這麼長的時間內如果一直沒有將資源進行提交,萬一丟失了就前功盡棄了。當然分支不是隻用於此類情況,還有其它很多種情況也能使用分支來達到目的。) 
使用分支需要注意,由於長期的獨立開發,可能會在合併回主線時出現較多的衝突。所以在支線上開發間期如果發現主幹有更新,而且這個更新有可能將來跟你產生衝突,那你可以先將主線的內容合併到分支上。已免等到做了大量修改再來更新。(其實此過程跟分支合併到主線上是一樣的操作,只是目的地不同。
例如我們在主線上的版本爲3,我們如何將此版本的信息合併到分支上呢? 

Merge…”。à在分支的根目錄上右鍵點擊,選擇“TortoiseSVN 
在這裏我們必需先弄明白一個合併背後的關健概念 
合併的過程中發生的所有事:首先兩個版本庫樹的比較,然後將區別應用到本地拷貝
這個命令是包括三個參數的
1. 
初始的版本樹 2.最終的版本樹 3一個接收區別的工作拷貝。 
弄明白這些概念之後我們繼續往下操作。 
在彈出的窗口中,選擇主線目錄和其版本號(初始的版本樹),再選擇主線目錄和最新的版本號(最終的版本樹),這裏也可以是某一個版本號但應該比初始的版本樹的版本號要高,接收區默認爲你右鍵所指的目錄,這裏是mybranch1.0 
在合併之前我們可以通過點擊“Unified diff”,查看兩版本樹之間所有文件的內容的變化,“diff”顯示出有發生變化的文件列表,“dry run”能顯示真正合並時的狀態信息,但並沒有做任何的合併操作。 我們點擊“Merge” 
在點擊“Merge”,合併後的文件(即對分支上的文件補上了主線上修改的內容),如無衝突則可以在分支上像其它文件一樣使用了,如果合併後的內容不滿意,可以通過撤銷來取消這次的合併操作,前提是未對合並後的文件做提交操作。 

分支合併到主線跟從主線上合併內容到分支上類似 
不同的是 
1
、開始的版本庫是分支創建的版本 
2
、結束的版本庫是完成所以開發工作之後的版本 
3
、應用的目的是主線目錄 

關於轉換工作拷貝、標籤(標籤在Subversion中跟分支是相同原理的,一個不去做任何的修改的分支就是版本庫某一時刻的一個快照,相當於爲某一個版本做了一個標籤)


(原文出處:http://www.cnblogs.com/cchyao/archive/2010/06/06/1752812.html)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章