SVN分支管理策略個人見解


本篇目錄

前言

使用svn做為源碼管理工具已有幾年,但一直都只是使用到了trunk。最近項目中發版本每次都會將一個版本的文件拷貝打包為rar壓縮文件,下個版本迭代則重新在svn服務端創建新的Repository用於管理。顯然這tag版本脫離了svn的管理,日志記錄也會發生斷層。

於是最近就查閱了一些文章,結合實際對 trunk、tags、branches 進行體驗操作,有點收獲,怕以后忘了,故做此記錄。

 

SVN分支管理策略

其中

Trunk主開發分支,所有最新的代碼都在這里。

Tags一個里程碑版本,一般都可保證直接上線(名字”V1.0”,”V1.1”,”V2.1”,”School_V1.0”,”School_V1.1”…)用於存放發布的版本。

Hotfix branch修正bug的分支(名字”hotfix_V1.x”,” School_hotfix_V1.x”, “School_hotfix_V1.x”),從需要修復的tag拉出分支,用於解決已上線版本的bug。

Customize branch:定制化需求的開發分支(名字School_Develop”…)用於定制化需求開發一個版本。

VisualSVN Server

服務端采用VisualSVN Server是免費的,而客戶端VisualSvn是收費的,可使用免費AnkhSvn替代集成至Visual Studio使用。VisualSVN Server的下載地址:https://www.visualsvn.com/server/download/VisualSVN Server的安裝使用網上有很多文章,此處不做描述。

TortoiseSVN客戶端

Repository的創建


Check out

首先Checkout在服務端repository創建的Test,默認創建了三個空文件夾。

trunk創建新項目MyProject


trunk更新提交更新,迭代版本創建Tag V1.0

提交迭代版本更新。


基於trunk中最新版本創建Tag_V1.0。在/trunk/MyProject目錄上右鍵,依次選擇"TortoiseSVN" -> "Branch/tag...",在彈出窗口的"To path"中填入tag的地址。


提交后在文件夾更新后會在Test\tags文件夾下出現MyPro_V1.0文件夾,tags目錄下的MyPro_V1.0文件夾就是以trunk中指定的版本拷貝的副本做為版本V1.0進行的封存。

基於Tag的Hotfix Branch

當版本V1.0發布上線后,出現線上bug后需要修復,則以Tag中MyPro_V1.0創建Hotfix Branch(步驟和創建Tag類似),在Hotfix的分支中修復問題。修復完成后需要將此次的改動Marge(合並)到trunk中同時創Tag_V1.1進行發布。


提交后在文件夾更新后會在Test\branches文件夾下出現bugfix_by_account文件夾,在此基礎上修復問題並提交。


在/branches/bugfix_by_account目錄上右鍵,依次選擇"TortoiseSVN" ->"Revision graph",在彈出的窗口中可以看到版本分支圖。



Hotfix Branch改動Marge(合並)到trunk中同時創Tag_V1.1進行發布

在/trunk/MyProject目錄上右鍵,依次選擇"TortoiseSVN" ->"Merge...",


點Next出現如下窗口,


如果trunk中的版本修改過的文件與Hotfix分支中的修改不重合則不會產生沖突。下圖是trunk進行過版本提交,與Hotfix分支中的修改產生沖突。


點擊 Edit Confict解決沖突。


沖突處理完后點擊Resolved,沖突解決完成本地trunk中已包含Hotfix分支的內容,合並后需要提交至svn服務器。

Hotfix分支修復完成后創建Tag_V1.1與之前trunk創建Tag_V1.0類似。

完成以上動作后的版本分支圖如下。


定制化分支Customize branch

定制化分支使用的方式和之前創建branch方式類似,在此不做贅述。

總結

合並發生在本地working copy,只要你不提交就不會影響到repository

合並前一定要先update、commit,保證不會out of day,並將本地的修改保存到repository。

使用svn創建的分支都會在指定的文件夾中創建副本,如果是在不同的分支文件夾中開發時候需要重新對項目配置(eg:IIS外部主機),也可在trunk中切換分支則不用修改配置,但是svn服務端需要保持可連接狀態。

最后說一句用過git之后,再也不想用其它[源代碼]管理器。



免責聲明!

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



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