本篇目錄前言使用svn做為源碼管理工具已有幾年,但一直都只是使用到了trunk。最近項(xiàng)目中發(fā)版本每次都會將一個版本的文件拷貝打包為rar壓縮文件,下個版本迭代則重新在svn服務(wù)端創(chuàng)建新的Repository用于管理。顯然這tag版本脫離了svn的管理,日志記錄也會發(fā)生斷層。 于是最近就查閱了一些文章,結(jié)合實(shí)際對 trunk、tags、branches 進(jìn)行體驗(yàn)操作,有點(diǎn)收獲,怕以后忘了,故做此記錄。
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”),從需要修復(fù)的tag拉出分支,用于解決已上線版本的bug。 Customize branch:定制化需求的開發(fā)分支(名字:”School_Develop”…),用于定制化需求開發(fā)一個版本。 VisualSVN Server服務(wù)端采用VisualSVN Server是免費(fèi)的,而客戶端VisualSvn是收費(fèi)的,可使用免費(fèi)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, trunk創(chuàng)建新項(xià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進(jìn)行的封存。 基于Tag的Hotfix Branch當(dāng)版本V1.0發(fā)布上線后,出現(xiàn)線上bug后需要修復(fù),則以Tag中MyPro_V1.0創(chuàng)建Hotfix Branch(步驟和創(chuàng)建Tag類似),在Hotfix的分支中修復(fù)問題。修復(fù)完成后需要將此次的改動Marge(合并)到trunk中同時創(chuàng)Tag_V1.1進(jìn)行發(fā)布。
提交后在文件夾更新后會在Test\branches文件夾下出現(xiàn)bugfix_by_account文件夾,在此基礎(chǔ)上修復(fù)問題并提交。
在/branches/bugfix_by_account目錄上右鍵,依次選擇"TortoiseSVN" ->"Revision graph",在彈出的窗口中可以看到版本分支圖。
Hotfix Branch改動Marge(合并)到trunk中同時創(chuàng)Tag_V1.1進(jìn)行發(fā)布在/trunk/MyProject目錄上右鍵,依次選擇"TortoiseSVN" ->"Merge...",
點(diǎn)Next出現(xiàn)如下窗口,
如果trunk中的版本修改過的文件與Hotfix分支中的修改不重合則不會產(chǎn)生沖突。下圖是trunk進(jìn)行過版本提交,與Hotfix分支中的修改產(chǎn)生沖突。
點(diǎn)擊 Edit Confict解決沖突。
沖突處理完后點(diǎn)擊Resolved,沖突解決完成本地trunk中已包含Hotfix分支的內(nèi)容,合并后需要提交至svn服務(wù)器。 Hotfix分支修復(fù)完成后創(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ā)時候需要重新對項(xiàng)目配置(eg:IIS外部主機(jī)),也可在trunk中切換分支則不用修改配置,但是svn服務(wù)端需要保持可連接狀態(tài)。 最后說一句用過git之后,再也不想用其它[源代碼]管理器。
|
|