本篇目錄前言使用svn做為源碼管理工具已有幾年,但一直都只是使用到了trunk,。最近項目中發(fā)版本每次都會將一個版本的文件拷貝打包為rar壓縮文件,下個版本迭代則重新在svn服務(wù)端創(chuàng)建新的Repository用于管理,。顯然這tag版本脫離了svn的管理,,日志記錄也會發(fā)生斷層。 于是最近就查閱了一些文章,,結(jié)合實際對 trunk,、tags、branches 進行體驗操作,,有點收獲,,怕以后忘了,故做此記錄,。
SVN分支管理策略其中 Trunk:主開發(fā)分支,,所有最新的代碼都在這里。 Tags:一個里程碑版本,,一般都可保證直接上線(名字:”V1.0”,”V1.1”,”V2.1”,”School_V1.0”,”School_V1.1”…),,用于存放發(fā)布的版本。 Hotfix branch:修正bug的分支(名字:”hotfix_V1.x”,” School_hotfix_V1.x”, “School_hotfix_V1.x”),,從需要修復的tag拉出分支,,用于解決已上線版本的bug。 Customize branch:定制化需求的開發(fā)分支(名字:”School_Develop”…),用于定制化需求開發(fā)一個版本,。 VisualSVN Server服務(wù)端采用VisualSVN Server是免費的,,而客戶端VisualSvn是收費的,可使用免費AnkhSvn替代集成至Visual Studio使用,。VisualSVN Server的下載地址:https://www./server/download/,,VisualSVN Server的安裝使用網(wǎng)上有很多文章,此處不做描述,。 TortoiseSVN客戶端Repository的創(chuàng)建 Check out首先Checkout在服務(wù)端repository創(chuàng)建的Test,,默認創(chuàng)建了三個空文件夾。 trunk創(chuàng)建新項目MyProject
trunk更新提交更新,,迭代版本創(chuàng)建Tag V1.0提交迭代版本更新,。
基于trunk中最新版本創(chuàng)建Tag_V1.0。在/trunk/MyProject目錄上右鍵,,依次選擇"TortoiseSVN" -> "Branch/tag...",,在彈出窗口的"To path"中填入tag的地址。
提交后在文件夾更新后會在Test\tags文件夾下出現(xiàn)MyPro_V1.0文件夾,,tags目錄下的MyPro_V1.0文件夾就是以trunk中指定的版本拷貝的副本做為版本V1.0進行的封存,。 基于Tag的Hotfix Branch當版本V1.0發(fā)布上線后,出現(xiàn)線上bug后需要修復,,則以Tag中MyPro_V1.0創(chuàng)建Hotfix Branch(步驟和創(chuàng)建Tag類似),,在Hotfix的分支中修復問題。修復完成后需要將此次的改動Marge(合并)到trunk中同時創(chuàng)Tag_V1.1進行發(fā)布,。
提交后在文件夾更新后會在Test\branches文件夾下出現(xiàn)bugfix_by_account文件夾,,在此基礎(chǔ)上修復問題并提交。
在/branches/bugfix_by_account目錄上右鍵,,依次選擇"TortoiseSVN" ->"Revision graph",,在彈出的窗口中可以看到版本分支圖。
Hotfix Branch改動Marge(合并)到trunk中同時創(chuàng)Tag_V1.1進行發(fā)布在/trunk/MyProject目錄上右鍵,,依次選擇"TortoiseSVN" ->"Merge...",,
點Next出現(xiàn)如下窗口,
如果trunk中的版本修改過的文件與Hotfix分支中的修改不重合則不會產(chǎn)生沖突,。下圖是trunk進行過版本提交,,與Hotfix分支中的修改產(chǎn)生沖突。
點擊 Edit Confict解決沖突,。
沖突處理完后點擊Resolved,,沖突解決完成本地trunk中已包含Hotfix分支的內(nèi)容,合并后需要提交至svn服務(wù)器,。 Hotfix分支修復完成后創(chuàng)建Tag_V1.1與之前trunk創(chuàng)建Tag_V1.0類似,。 完成以上動作后的版本分支圖如下,。
定制化分支Customize branch定制化分支使用的方式和之前創(chuàng)建branch方式類似,在此不做贅述,。 總結(jié)合并發(fā)生在本地working copy,,只要你不提交就不會影響到repository。 合并前一定要先update,、commit,,保證不會out of day,并將本地的修改保存到repository,。 使用svn創(chuàng)建的分支都會在指定的文件夾中創(chuàng)建副本,,如果是在不同的分支文件夾中開發(fā)時候需要重新對項目配置(eg:IIS外部主機),也可在trunk中切換分支則不用修改配置,,但是svn服務(wù)端需要保持可連接狀態(tài),。 最后說一句用過git之后,再也不想用其它[源代碼]管理器,。
|
|