天天看點

SVN分支和合并(trunk、branches、tags)

原文位址:原文連結位址

盡管svn沒有作強制要求,但是一般svn版本庫目錄建議建立trunk、branches和tags三個目錄。在實際操作時,trunk主幹版本要時刻保持幹淨,即随時可以基于這個版本進行修改并将應用部署上線。branches是分支目錄,存放并行開發的項目代碼,因為分支是主幹的廉價拷貝(相當隻是送出了一次主幹版本,增加了一個版本号, 并沒有取出版本庫作鏡像拷貝),是以你可以放心建立很多分支版本。不過 Subversion不支援跨版本庫的拷貝,當使用svn copy時你隻能在同一個版本庫内操作。tags目錄存放trunk某個的快照,比如說release-1.0即trunk處于1.0版本時的快照。

使用svn來作團隊的代碼管理,那麼分支和合并将是非常常用的操作。下面是一個簡單的示例。

1. 建立分支。這裡假設你要負責一個叫theme的項目,分支号1.7.2。

   1. #這裡的localhost是svn伺服器位址

   2. svn copy -m "1.7.2 - theme" svn://localhost/www/trunk svn://localhost/www/branches/branch1.7.2-theme

   3. svn co svn://localhost/www/branches/branch1.7.2-theme

2. 從trunk中merge到分支。忙了一個星期終于開發完了,但是開發期間trunk版本有過改動,部署上線前你需要合并trunk的代碼。

   1. #branch1.7.2-theme是分支目錄,注意不可以進到分支子目錄

   2. cd branch1.7.2-theme

   3. #前面的12972是開分支之前trunk的版本号,後面的12991是merge時trunk的版本号

   4. svn merge -r 12972:12991 svn://localhost/www/trunk

如果有沖突選擇p(postpone),merge完了之後使用svn st|grep ^C檢視沖突檔案,然後比對修改沖突檔案。解決沖突後再check in ,資訊寫上執行的merge操作。

   1. svn ci -m 'svn merge -r 12972:12991 svn://localhost/www/trunk'

3. 從分支merge到trunk。上線 測試 完畢,你很幸運,一切都如預期正常,這時就要将分支回歸trunk,将trunk更新到最新。

   1. #先從trunk checkout一份新鮮的代碼,然後cd到該版本目錄下

   2. svn co svn://localhost/www/trunk

   3. cd trunk

   4. #12973是分支開始的版本号,13006是分支結束的版本号

   5. svn merge -r 12973:13006 svn://localhost/www/branches/branch1.7.2-theme

如步驟2一樣解決沖突,解決沖突後再check in,資訊寫上執行的merge操作。

   1. svn ci -m "svn merge -r 12973:13006 svn://localhost/www/branches/branch1.7.2-theme"

繼續閱讀