Svn使用入門之高級篇
上節我們介紹了Svn使用入門中的基礎使用,這節我們介紹一下Svn使用入門的高級使用,主要針對有一定Svn使用基礎的朋友們,看完本文你肯定有不少收獲,希望本文能教會你更多東西,歡迎大家一起來學習Svn使用入門高級篇。
第二部分:高級使用
主要包含如下內容:打版本標記、分支操作
標記和分支可以理解為都是項目的一份拷貝。只不過用途不同。而實際上這兩個東西在SVN服務器上是沒有區別的。
建立標記、分支:所謂打標記,和CVS里面的Tagasaversion是一個意思。就是整個項目的當前狀況拍一個照片,放在某目錄,日后方便查看。例如我們可以記住某項目的134版本是這個階段工作的階段性成果,而使用標記,我們可以把這個項目的134版本拷貝一份放在某個目錄,并命名為project_a_final_20080227。以后任何時候都可以從這個位置方便的找回這個版本。
在Subclipse中,SVN操作選項中有Tag/Branche選項,點擊之,第二個地址就是tag的存放地址(分支、標記存放在哪里都有一些一般性的建議,關于版本庫的規劃請參見另外一份文檔《版本庫結構規劃建議》)。
而在TortoiseSVN中,也有分支/標記這樣的選項。操作起來大同小異。
分支的創建和上面的Tag創建是完全一樣的,只不過我們一般建議把分支存放于一個叫做branches的目錄。
切換分支:假設我們創建了一個分支叫做branchesA。之后開發人員可以工作在主干或者這個分支上,二者之間的切換也很簡單,菜單中有一個“切換”選項。點擊按提示操作即可。
分支合并:這個是分支開發中最重要的一步。假設BranchesA是為了一個新功能的開發而創建的,那么該功能開發完成后,需要把這個分支合并回到主干上來。這時可以選擇SVN操作菜單中的“合并”功能。
Svn使用入門中所謂合并,實際上是比較兩個資源的不同,找出差異,并將這個差異應用到本地工作拷貝上。
合并的過程中涉及到的兩個資源一般稱作起始路徑和目標路徑。這兩個路徑的選取是很隨意的。舉以下幾個例子:
起始路徑http://domain/svn/project/branches/b1創建分支時的版本(例如130)
目標路徑http://domain/svn/project/branches/b1當前最新版本(例如200)
假設本地拷貝該項目的主干版本
合并操作可以表達為:
本地版本+(分支當前版本-分支創建時的版本)=合并后的版本
(我們可以將開發理解成在版本庫上的一種增量操作,此時括號中的減法得出的是一個正值,例如“增加了a.txt這個文件”)
合并意義:比較分支b1創建時的樣子和現在的樣子,找出差異(注意這個差異實際上就是b1分支的開發成果),將這個差異應用到本地工作拷貝。而當前工作拷貝是項目的主干本本,這就意味著把分支b1的開發成果應用到了主干上,經過檢查、提交到版本庫,最后達到了將分支開發所完成的功能合并到了主干上的目的。下面是Svn使用入門介紹中關于合并的兩個實例講解。
------------------------------------------------------------------------------------------------------------
起始路徑:http://domain/svn/project/odps上一次提交給信訪項目時的版本120
目標路徑:http://domain/svn/project/odps當前版本145
假設本地拷貝:信訪項目的當前版本
合并操作表達如下:
項目A當前版本+(框架當前版本-框架上次提交給項目時的版本)=項目A進行了框架升級后的版本
(注意其中的減法結果依然是正值)
Svn使用入門介紹中合并意義:比較上一次把odps框架提交給信訪項目使用時的樣子和該框架現在的樣子,找出差異,應用到本地工作拷貝。而當前工作拷貝是信訪項目,這就意味著把ODPS框架這個階段開發的成果應喲功能到信訪項目中,經過檢查、提交到版本庫,最后達到的目的是把信訪項目中的ODPS項目部分進行了升級(ODPS框架和信訪項目是由不同的小組開發的,所以這個操作很有意義)。
------------------------------------------------------------------------------------------------------------
起始路徑:http://domain/svn/project/trunk當前版本300
目標路徑:http://domain/svn/project/trunk某個歷史版本250
工作拷貝:http://domain/svn/project/trunk當前版本300,與起始路徑相同
注意:這個例子和上面兩個例子不同,上面兩個例子其實路徑在時間上都早于目標路徑。
合并操作表達如下:
項目當前版本+(項目歷史版本250-項目當前版本)=項目回滾后的版本
注意這一次括號中的減法操作按照上面的規則來講得出的結果是負的。也就是說,假設我們在開發過程中新增了一個文件a.txt,那么減法(新版本-舊版本)表達的含義是“以當初的版本位處發現,看現在的版本”,得出的結論是新增了一個文件a.txt,而減法(舊版本-新版本),也就是把起始路徑和目標路徑的時間順序倒了一下,表達的含義就變成了“站在今天,看過去有什么不同”,得出的結論是少了一個a.txt文件。
合并意義:從現在看過去,整個差異部分“加了一個負號”,經過檢查、提交,最后的結果是當前項目恢復到了歷史上的250版本。
其它:單一差異文件,補丁
上面的分支合并操作是比較兩個資源的不同,將差異應用到本地工作拷貝。在此之外,SVN可以比較兩個資源的不同,并將這些不同之處記錄在一個獨立文件中。而這一個差異文件也就是所謂的補丁。本節關于Svn使用入門介紹完畢,請關注本節其他相關報道。
【編輯推薦】