svn分支管理的使用与经验
篇一
最近項目用上了svn分支管理,因為項目太過龐雜,版本迭代也過于頻繁,致使多個版本的代碼交雜在一起,難以維護,無法保證其中某個版本的穩(wěn)定性。當(dāng)然,我們也用過很土的辦法,代碼復(fù)制一份出來,但是,這個副本也需要加上新開發(fā)的功能。
所以,我們決定使用svn分支管理。當(dāng)然,這有代價,svn版本管理對二進制文件不友好,可能文件分支合并時二進制文件會難以處理。(這里說的二進制文件,泛指所有非文本文件,比如說美術(shù)資源,策劃文檔)
?
svn分支簡述
使用分支最主要的目的是,多個分支可以并行,相互不干擾,而且任何時候都可以合并。其次,容易保證主干的穩(wěn)定性。
?
沒有分支的時候,你的svn可能是這樣的:
就一份代碼存在主干(trunk),當(dāng)然也不會有主干這個說法。開發(fā)完1.0,繼續(xù)開發(fā)2.0,版本一個一個迭代。
?
有了分支后,你的svn可能就是這樣的了:
主干用來存放穩(wěn)定的代碼,每個版本都會開一個分支,等版本完成后再合并到主干。版本一個一個迭代,但可以并行開發(fā)。
?
?
svn分支管理
接下來,簡單講解下 如何使用svn做分支管理。
?
第一步,建立主干分支目錄結(jié)構(gòu)
?
第二步,創(chuàng)建分支
在主干目錄 trunk 右鍵,在svn菜單選擇?Branch/tag...
步驟①是分支地址,這里直接以 /branches/1
步驟②是取trunk版本,HEAD revision表示最新版本,其他可通過 show log選擇
執(zhí)行 OK 后,到?branches 目錄 svn update 就可以看到最新的分支了。
?
第三步,合并分支到主干
分支就是開發(fā)目錄了,現(xiàn)在分支提交一個文件做測試。
然后,合并這個文件分支到主干。
現(xiàn)在到主干目錄,右鍵svn菜單選?Merge...
?
這個是將分支或主干的修改合并到當(dāng)前工作目錄,繼續(xù)如下。
接下來點完成,如果沒沖突的話,分支文件就合到主干了。
?
但這里還要一個操作,就是在主干提交分支合過來的文件。
題外話,之所以要有這一步,除了對分支內(nèi)容進一步修改,還可以同時合并多個分支。選擇權(quán)交給用戶。
另外,主干內(nèi)容合到分支,也是使用?Merge 命令。
?
svn分支應(yīng)用
根據(jù)項目的不同,實際上的分支架構(gòu)也會不同。以我們項目為例,我們是做游戲的,項目過于龐雜,版本迭代非常頻繁。在版本1.1還沒完成時,我們可能就要開發(fā)2.0版本,這樣,版本1.1和版本2.0就要并行開發(fā)。而且,我們對穩(wěn)定性有非常高的要求。
?
為此,我們設(shè)計了這樣的svn架構(gòu)。
?
測試分支
為了保證主干穩(wěn)定,我們加了測試分支(如 rel_1.1的測試分支為 rel1.1_test )。測試分支1.1是在分支1.1開發(fā)結(jié)束后開的,等待測試修復(fù)bug完成后,就會把測試分支1.1合入主干及分支1.1。合并完成后,這個測試分支將會關(guān)閉。
?
多分支并行
因為項目需求較多,版本迭代繁雜,所以在版本1.1還沒結(jié)束時,就開了版本2.0的分支。當(dāng)分支2.0需要測試合并到主干時,就會從主干合并最新的文件到2.0測試分支,測試通過后,再合并到主干。
?
分支合并的時機
對我們而言,不同分支的最大區(qū)別是功能上線的時間點。我們根據(jù)上線周期劃分功能,拆分到不同分支。因為開發(fā)需求多,迭代過于頻繁,所以靠后的分支對比之前的分支通常只是多了某些新功能。這樣,分支的出現(xiàn),避免了未開發(fā)完成的功能影響了已開發(fā)完的功能,導(dǎo)致當(dāng)前版本的不穩(wěn)定。所以,合并分支的時機就是這個分支的功能要不要上線。
?
這樣,主干永遠是穩(wěn)定的,也只有經(jīng)過測試的內(nèi)容,才會合入主干。同時,多個版本也可以并行。
?
參考:http://blog.csdn.NET/mycwq/article/details/51793847
?
?
?
篇二
SVN分支管理策略個人見解
本篇目錄
-  
前言
 -  
SVN分支管理策略
 -  
VisualSVN Server
 -  
TortoiseSVN客戶端
-  
Repository的創(chuàng)建
 -  
Check out
 -  
trunk創(chuàng)建新項目MyProject
 -  
trunk更新提交更新,迭代版本創(chuàng)建Tag V1.0
 -  
基于Tag的Hotfix Branch
 -  
Hotfix Branch改動Marge(合并)到trunk中同時創(chuàng)Tag_V1.1進行發(fā)布
 -  
定制化分支Customize branch
 
 -  
 
-  
總結(jié)
 
前言
使用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”),從需要修復(fù)的tag拉出分支,用于解決已上線版本的bug。
Customize branch:定制化需求的開發(fā)分支(名字:”School_Develop”…),用于定制化需求開發(fā)一個版本。
VisualSVN Server
服務(wù)端采用VisualSVN Server是免費的,而客戶端VisualSvn是收費的,可使用免費AnkhSvn替代集成至Visual Studio使用。VisualSVN Server的下載地址:https://www.visualsvn.com/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
當(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進行發(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進行發(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分支修復(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ā)時候需要重新對項目配置(eg:IIS外部主機),也可在trunk中切換分支則不用修改配置,但是svn服務(wù)端需要保持可連接狀態(tài)。
最后說一句用過git之后,再也不想用其它[源代碼]管理器。
?
轉(zhuǎn)載自:
https://www.cnblogs.com/ddrsql/p/5909683.html
總結(jié)
以上是生活随笔為你收集整理的svn分支管理的使用与经验的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: python中文字体下载_对Python
 - 下一篇: Elsevier 模板 Latex参考文