SVN中Branch的創建與合並


在使用源代碼版本控制工具時,最佳實踐是一直保持一個主干版本。但是為了應付實際開發中的各種情況,適時的開辟一些分支也是很有必要的。比如在持續開發新功能的同時,需要發布一個新版本,那么就需要從開發主干中建立一個用於發布的分支,在分支上進行bug fix,維護版本的穩定,並適時的將一些改動合並回主干。目前大紅大紫的源代碼版本控制工具git很受大家推崇,原因之一就是其在這方面的功能相當強大。其實老牌的SVN也是有這樣的功能的,接下來就給大家講解下。

Branch的創建

在SVN中主干代碼一般是放置在Trunk目錄下的,如果要新建Branch的話則放置在Branchs目錄下。(注意這是一種約定,SVN並不強制你這樣做)注意Branhs和Trunk目錄要平級,不能有嵌套,要不會引起混亂。

1
2
3
4
 myproject/  trunk/  branches/  tags/ 

創建一個Branch也相當簡單,只需要一條命令即可。

1
svn copy http://example.com/repos/myproject/trunk http://example.com/repos/myproject/branches/releaseForAug -m 'create branch for release on August' 

這條命令是指給myproject這個repo創建一個名為releaseForAug的branch,使用-m來加入描述。

之后你就可以通過 svn checkout http://example.com/repos/myproject/branches/releaseForAug來遷出你的Branch源文件,在上面進行修改和提交了。

其實SVN並沒有Branch的內部概念。我們只是創建了一個repo的副本,並自己賦予這個副本作為Branch的意義,所以這與git中的Branch有很大不同。

需要注意的是Branch和Trunk使用同一套版本號,也就是說無論在Branch還是Trunk的提交都會引起主版本號的增加。這是因為svn copy只支持同一個repository內的文件copy,並不支持跨repository的copy,所以新創建的Branch和Trunk都屬於同一個repository。

合並

既然要創建分支也需要合並分支。基本的合並也是蠻簡單的。

假設現在Branch上fix了一系列的bug,現在我們想把針對Branch的改變同步到Trunk上,那么應該怎么做那?

  1. 保證當前Branch分支是clean的,也就是說使用svn status看不到任何的本地修改。

  2. 命令行下切換到Trunk目錄中,使用 svn merge http://example.com/repos/myproject/branches/releaseForAug 來將Branch分支上的改動merge回Trunk下。

  3. 如果出現merge沖突則進行解決,然后執行svn ci -m 'description'來提交變動。

當然在merge你也可以指定Branch上那些版本變更可以合並到Trunk中。

1
svn merge http://example.com/repos/myproject/branches/releaseForAug -r150:HEAD 

示例中是將Branch的從版本150到當前版本的所有改動都合並到Trunk中。

你也可以將Trunk中的某些更新合並到Branch中,還是同樣的方法。

查看當前Branch和Trunk的合並情況

可以使用svn mergeinfo來查看merge情況。

查看當前Branch中已經有那些改動已經被合並到Trunk中:

1
2
# cd to trunk directory svn mergeinfo http://example.com/repos/myproject/branches/releaseForAug 

查看Branch中那些改動還未合並。

1
2
3
#cd to trunk directory  svn merginfo http://example.com/repos/myproject/branches/releaseForAug --show-revs eligible 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM