新聞中心
本節(jié)講解一下如何進(jìn)行SVN分支維護(hù),前面幾節(jié)我們講了SVN的分支與合并,相信大家應(yīng)該掌握了,下面就SVN分支維護(hù)問(wèn)題和大家討論一下,希望對(duì)你有所啟發(fā)。
你一定注意到了Subversion極度的靈活性,因?yàn)樗孟嗤牡讓訖C(jī)制(目錄拷貝)實(shí)現(xiàn)了分支和標(biāo)簽,因?yàn)榉种Ш蜆?biāo)簽是作為普通的文件系統(tǒng)出現(xiàn),會(huì)讓人們感到害怕,因?yàn)樗`活了,在這個(gè)小節(jié)里,我們會(huì)提供安排和管理數(shù)據(jù)的一些建議。

創(chuàng)新互聯(lián)是一家專業(yè)從事成都做網(wǎng)站、成都網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)的品牌網(wǎng)絡(luò)公司。如今是成都地區(qū)具影響力的網(wǎng)站設(shè)計(jì)公司,作為專業(yè)的成都網(wǎng)站建設(shè)公司,創(chuàng)新互聯(lián)依托強(qiáng)大的技術(shù)實(shí)力、以及多年的網(wǎng)站運(yùn)營(yíng)經(jīng)驗(yàn),為您提供專業(yè)的成都網(wǎng)站建設(shè)、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)及網(wǎng)站設(shè)計(jì)開(kāi)發(fā)服務(wù)!
版本庫(kù)布局
有一些標(biāo)準(zhǔn)的,推薦的組織版本庫(kù)的方式,許多人創(chuàng)建一個(gè)trunk目錄來(lái)保存開(kāi)發(fā)的“主線”,一個(gè)branches目錄存放分支拷貝,一個(gè)tags目錄保存標(biāo)簽拷貝,如果一個(gè)版本庫(kù)只是存放一個(gè)項(xiàng)目,人們會(huì)在頂級(jí)目錄創(chuàng)建這些目錄:
- /trunk
- /branches
- /tags
- [/pre]如果一個(gè)版本庫(kù)保存了多個(gè)項(xiàng)目,管理員會(huì)通過(guò)項(xiàng)目來(lái)布局(見(jiàn)“規(guī)劃你的版本庫(kù)結(jié)構(gòu)”一節(jié)關(guān)于“項(xiàng)目根目錄”):
- /paint/trunk
- /paint/branches
- /paint/tags
- /calc/trunk
- /calc/branches
- /calc/tags
- [/pre]
當(dāng)然,你可以自由的忽略這些通常的布局方式,你可以創(chuàng)建任意的變化,只要是對(duì)你和你的項(xiàng)目有益,記住無(wú)論你選擇什么,這不會(huì)是一種永久的承諾,你可以隨時(shí)重新組織你的版本庫(kù)。因?yàn)榉种Ш蜆?biāo)簽都是普通的目錄,svnmove命令可以任意的改名和移動(dòng)它們,從一種布局到另一種大概只是一系列服務(wù)器端的移動(dòng),如果你不喜歡版本庫(kù)的組織方式,你可以任意修改目錄結(jié)構(gòu)。記住,盡管移動(dòng)目錄非常容易,你必須體諒你的用戶,你的修改會(huì)讓你的用戶感到迷惑,如果一個(gè)用戶的擁有一個(gè)版本庫(kù)目錄的工作拷貝,你的svnmove命令也許會(huì)刪除最新的版本的這個(gè)路徑,當(dāng)用戶運(yùn)行svnupdate,會(huì)被告知這個(gè)工作拷貝引用的路徑已經(jīng)不再存在,用戶需要強(qiáng)制使用svnswitch轉(zhuǎn)到新的位置。下面我們看一下SVN分支維護(hù)中數(shù)據(jù)的生命周期。
數(shù)據(jù)的生命周期
另一個(gè)Subversion模型的可愛(ài)特性是分支和標(biāo)簽可以有有限的生命周期,就像其它的版本化的項(xiàng)目,舉個(gè)例子,假定你最終完成了calc項(xiàng)目你的個(gè)人分支上的所有工作,在合并了你的所有修改到/calc/trunk后,沒(méi)有必要繼續(xù)保留你的私有分支目錄:
- $svndeletehttp://svn.example.com/repos/calc/branches/my-calc-branch\
- -m"Removingobsoletebranchofcalcproject."
- Committedrevision375.
- [/pre]
你的分支已經(jīng)消失了,當(dāng)然不是真的消失了:這個(gè)目錄只是在HEAD修訂版本里消失了,如果你使用svncheckout、svnswitch或者svnlist來(lái)檢查一個(gè)舊的版本,你仍會(huì)見(jiàn)到這個(gè)舊的分支。
如果瀏覽你刪除的目錄還不足夠,你可以把它找回來(lái),恢復(fù)數(shù)據(jù)對(duì)Subversion來(lái)說(shuō)很簡(jiǎn)單,如果你希望恢復(fù)一個(gè)已經(jīng)刪除的目錄(或文件)到HEAD,僅需要使用svncopy-r來(lái)從舊的版本拷貝出來(lái):
- $svncopy-r374http://svn.example.com/repos/calc/branches/my-calc-branch\
- http://svn.example.com/repos/calc/branches/my-calc-branch
- Committedrevision376.[/pre]
在我們的例子里,你的個(gè)人分支只有一個(gè)相對(duì)短的生命周期:你會(huì)為修復(fù)一個(gè)Bug或?qū)崿F(xiàn)一個(gè)小的特性來(lái)創(chuàng)建它,當(dāng)任務(wù)完成,分支也該結(jié)束了。在軟件開(kāi)發(fā)過(guò)程中,有兩個(gè)“主要的”分支一直存在很長(zhǎng)的時(shí)間也是很常見(jiàn)的情況,舉個(gè)例子,假定我們是發(fā)布一個(gè)穩(wěn)定的calc項(xiàng)目的時(shí)候了,但我們?nèi)詴?huì)需要幾個(gè)月的時(shí)間來(lái)修復(fù)Bug,你不希望添加新的特性,但你不希望告訴開(kāi)發(fā)者停止開(kāi)發(fā),所以作為替代,你為軟件創(chuàng)建了一個(gè)“分支”,這個(gè)分支更改不會(huì)很多:
- $svncopyhttp://svn.example.com/repos/calc/trunk\
- http://svn.example.com/repos/calc/branches/stable-1.0\
- -m"Creatingstablebranchofcalcproject."
- Committedrevision377.
- [/pre]
而且開(kāi)發(fā)者可以自由的繼續(xù)添加新的(試驗(yàn)的)特性到/calc/trunk,你可以宣布這樣一種政策,只有bug修正提交到/calc/branches/stable-1.0,這樣的話,人們繼續(xù)在主干上工作,某個(gè)人會(huì)選擇在穩(wěn)定分支上做出一些Bug修正,甚至在穩(wěn)定版本發(fā)布之后。你或許會(huì)在這個(gè)維護(hù)分支上工作很長(zhǎng)時(shí)間—也就是說(shuō),你會(huì)一直繼續(xù)為客戶提供這個(gè)版本的支持。到這里SVN分支維護(hù)問(wèn)題講解完畢不知你掌握了沒(méi)有。
分享文章:SVN分支維護(hù)專家在線
本文地址:http://fisionsoft.com.cn/article/dppsseh.html


咨詢
建站咨詢
