版本分支控制介

1.創建分支的意義 

創 建分支的意義,比如我們在一個基礎平臺上進行開發,每個技術小組負責一個子項目,而基礎平臺也是有可能會繼續更改的,這個時候,如果不創建分支,子項目之間會相互影響,影響最大的就是後期的測試和版本發佈,子項目A已經結束,但測試卻受到正在進行的子項目B的影響,測試通不過,就別說版本發佈了。所以,我 們需要從目前的項目(主幹trunk)中創建分支(branch),隔離子項目間的相互影響。

2.svn創建分支原理 

在 svn中,創建分支,實際上就是一個版本拷貝(對應copy to...注意:絕不是簡單在客戶端上copy一個目錄,而是svn倉庫中copy,文件版本號會增加。),兩邊做任何修改發生的版本變化,是一套機制。 舉例:目前主幹版本是100,分支版本是101,主幹中增加一個文件,版本爲102,分支中再增加一個文件,版本就爲103了。兩邊的版本號是一套,不會 重複。

3.svn創建分支的方法 

TortoiseSVN:右鍵點擊工程目錄->TortoiseSVN->Branch/tag..菜單,From WC at Url自動爲工程svn url,比如https://localhost:8443/svn/fbysss/prj1/trunk,to Url填寫https://localhost:8443/svn/fbysss/prj1/branches/branch1。點OK按鈕,分支就創建好了。 

Subclipse:Team->Branch/tag..,跟上面類似. 

SVN命令模式:svn copy trunk_path  branch_path  -m '描述' 舉例:svn copy https://localhost:8443/svn/fbysss/prj1/trunk  https://localhost:8443/svn/fbysss/prj1/branches/branch1 -m "第一個分支" 注意一點:trunk和branch不能互爲子目錄,否則就亂套了。

4.分支合併 

1)從分支合併到主幹 

分支開發結束之後,往往需要合併回主幹去測試、發佈,但分支和主幹可能有很多衝突的地方,在合併時經常需要手工解決。

From:主幹的打出分支時的版本 To:分支的Head版本(最新版本) 被操作對象:主幹 

2)從主幹合併到分支 

試想這樣的情況:一個項目裏面,要獨立出來一個子項目,需要單獨發佈版本,用到了基礎框架代碼,而基礎框架在主幹中不斷修改完善,這就需要從主幹合併到分支。 
From:分支的第一個版本(最舊版本) To:主幹的Head版本(最新版本) 被操作對象:分支 

相當於從分支的第一個版本開始一直到主幹最後一個版本結束合併之後,替換分支。 

3)從分支合併到分支 

有 這樣的需求:一個項目中有很多分支,這些分支需要分期上線,有多個工作並行,但每一期之間不能相互影響,這就可以打出幾個tag(也是分支),從主幹 copy而來。其他主幹根據排期分別合併到這些tag中來。比如有prjTag1和prjTag2,model1、model2需要合併到prjTag1 中,model3、model4需要合併到prjTag2中。拿prjTag1舉例: 在prjTag1的work copy中,merge 

From:主幹的打出分支時的版本 To:分支的Head版本(最新版本) 

注意:From不是本Tag的某個版本,而是之前主幹打出分支時的版本,最終Merge到prjTag1的work copy,而prjTag1是找不到當初打分支時的版本的。


怎麼理解這個From和To呢?似乎跟我們的想當然不太一樣:因爲我們理解,把分支合併到主幹,肯定是From分支,To主幹。怎麼搞反了呢? 實際上,Svn認爲,我們要合併的,是從某個版本開始到某個版本結束,兩邊的版本號實際上是一套系統。而不是我們理解中的從哪個文件分支複製到哪個文件分支,這一點兒會在操作對象中有體現,比如我們要分支合併到主幹,就要操作主幹,主幹合併到分支,就要操作分支等。

發佈了49 篇原創文章 · 獲贊 4 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章