參考資料:
儘管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
2
3
#這裡的localhost是svn伺服器位址
svn copy -m
"1.7.2 - theme"
svn:
//localhost/www/trunk
svn:
//localhost/www/branches/branch1
.7.2-theme
svn co svn:
//localhost/www/branches/branch1
.7.2-theme
2. 從trunk中merge到分支。忙了乙個星期終於開發完了,但是開發期間trunk版本有過改動,部署上線前你需要合併trunk的**。
1
2
3
4
#branch1.7.2-theme是分支目錄,注意不可以進到分支子目錄
cd
branch1.7.2-theme
#前面的12972是開分支之前trunk的版本號,後面的12991是merge時trunk的版本號
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
2
3
4
5
#先從trunk checkout乙份新鮮的**,然後cd到該版本目錄下
svn co svn:
//localhost/www/trunk
cd
trunk
#12973是分支開始的版本號,13006是分支結束的版本號
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"
SVN分支和合併的簡單例子
儘管svn沒有作強制要求,但是一般svn版本庫目錄建議建立trunk branches和tags三個目錄。在實際操作時,trunk主幹版本要時刻保持乾淨,即隨時可以基於這個版本進行修改並將應用部署上線。branches是分支目錄,存放並行開發的專案 因為分支是主幹的廉價拷貝 相當只是提交了一次主幹版...
SVN分支和合併
size small b color red 需要注意的是branch和trunk使用同一套版本號,也就是說無論在branch還是trunk的提交都會引起主版本號的增加。這是因為svn copy只支援同乙個repository內的檔案copy,並不支援跨repository的copy,所以新建立的b...
SVN建立分支和合併主幹
建立分支 獲得分支 合併主幹上的最新 到分支上 如果需要預覽該重新整理操作,可以使用svn mergeinfo命令,如 或使用svn merge dry run選項以獲取更為詳盡的資訊。分支合併到主幹 一旦分支上的開發結束,分支上的 需要合併到主幹。svn中執行該操作需要在trunk的工作目錄下進行...