svn 使用教程之-分支/標記 合併 subeclipse

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



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




如圖所示,我們的項目放在了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 中 跟分支是相同原理的,一個不去做任何的修改的分支就是版本庫某一時刻的一個快照,相當於爲某一個版本做了一個標籤)

 

 

====================================================

 

圖文:

 

首先說下爲什麼我們需要用到分支-合併。比如項目demo下有兩個小組,svn 下有一個 trunk版。由於客戶需求突然變化,導致項目需要做較大改動,此時項目組決定由小組1繼續完成原來正進行到一半的工作【某個模塊】,小組2進行新需求的 開發。那麼此時,我們就可以爲小組2建立一個分支,分支其實就是trunk版【主幹線】的一個copy版,不過分支也是具有版本控制功能的,而且是和主幹 線相互獨立的,當然,到最後我們可以通過【合併】功能,將分支合併到trunk上來,從而最後合併爲一個項目。

下面是在eclipse下使用subeclipse插件詳細使用過程:
首先建立一個工程,名字叫Facebook
1.建立分支,爲新的分支指定訪問URL:Facebook3[註釋不要忘了]






2.建立好分之後,使用“切換”功能切換到分支下進行開發。



我新建了一個FB3.html的文件並在分支下進行提交。




3.切換回trunk版【即URL爲Facebook的版本】

你會發現trunk版裏並沒有出現我們剛剛提交的FB3.html,因爲FB3.html是屬於分支的,接下來我們要做的就是“合併”,通過合 並,我們可以將分支下進行的更改合併到trunk版裏。




下面是合併的主要配置:
起始路徑:trunk版的路徑【若需要把trunk版的改動合併到分支則相反】
目標路徑:從哪裏獲取改動【這裏是分支路徑】
你可以使用指定的版本號,這裏採用最新修訂版。



4.點擊合併,你會發現trunk版下新增了一個文件FB3.html
這樣我們就將分支下所做的改動合併到了trunk版裏。


值得注意的是:
1.在建立分支的時候最好添加註釋。
2.進行合併前最好保證兩個版本都是乾淨的【即沒有未提交或者衝突的文件存在】
3.合併時的目標路徑:需要把誰的改動合併到其他版本就填誰的URL。


整個過程的SVN 命令行輸出如下:

Xml代 碼
  1. copy -rHEAD svn ://192.168.1.192/placii/staggingarea/xiangqi/Facebook svn ://192.168.1.192/placii/staggingarea/xiangqi/Facebook3  
  2. propset subclipse:tags "1538,Facebook2,/Facebook2,branch  
  3. 1540,Facebook3,/Facebook3,branch" E:/myeclipse /workspace/Facebook  
  4. switch svn ://192.168.1.192/placii/staggingarea/xiangqi/Facebook3 E:/myeclipse /workspace/Facebook -rHEAD  
  5.     At revision 1541.  
  6. add -N E:/myeclipse /workspace/Facebook/WebRoot/FB3.html  
  7.     A         E:/myeclipse /workspace/Facebook/WebRoot/FB3.html  
  8. commit -m "" E:/myeclipse /workspace/Facebook/WebRoot/FB3.html  
  9.     Adding         E:/myeclipse /workspace/Facebook/WebRoot/FB3.html  
  10.     Transmitting file data ...  
  11.     Committed revision 1542.  
  12. switch svn ://192.168.1.192/placii/staggingarea/xiangqi/Facebook E:/myeclipse /workspace/Facebook -rHEAD  
  13.     D  E:/myeclipse /workspace/Facebook/WebRoot/FB3.html  
  14.     Updated to revision 1542.   
  15.     ===== File Statistics:  =====  
  16.     Deleted: 1  
  17. merge svn ://192.168.1.192/placii/staggingarea/xiangqi/Facebook@HEAD svn ://192.168.1.192/placii/staggingarea/xiangqi/Facebook3@HEAD E:/myeclipse /workspace/Facebook  
  18.     A  E:/myeclipse /workspace/Facebook/WebRoot/FB3.html  
  19.     Merge complete.   
  20.     ===== File Statistics:  =====  
  21.     Added: 1  



希望本文能有所幫助。
其他參考資料:
http://www.javaeye.com/wiki/subclipse/1626-subclipse-getting-started-guide-and-reference-c

 

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