您的位置:軟件測(cè)試 > 開源軟件測(cè)試 > 開源配置管理工具 > SVN
Subversion合并跟蹤
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/3/28 15:02:54 ] 推薦標(biāo)簽:

Subversion 1.5支持合并跟蹤,本文將對(duì)什么是合并跟蹤,及其對(duì)你們組織具備的意義提供了高級(jí)的總體看法,我將會(huì)從許多基本的解釋開始,如果你熟悉分支與合并,請(qǐng)掠過第1段。

1. 什么是分支與合并?

開發(fā)團(tuán)隊(duì)經(jīng)常會(huì)在多個(gè)并行線上開發(fā),叫做”分支”,一個(gè)分支從拷貝開發(fā)項(xiàng)目(或一個(gè)目錄)所有的文件開始,然后開始單獨(dú)的維護(hù)這個(gè)拷貝,文件開始都是相同的,但經(jīng)過一段時(shí)間,它們將會(huì)不同,因?yàn)椴煌拈_發(fā)者在不同分支做出了修改。

為什么分支?你或許在Subversion創(chuàng)建一個(gè)分支用來維護(hù)產(chǎn)品發(fā)布,同時(shí)為下一個(gè)版本工作。為什么?下一個(gè)版本會(huì)有新的特性,但是在維護(hù)分支你只接受bug修改。另一個(gè)用例是開發(fā)復(fù)雜的新特性,而它會(huì)將使得開發(fā)構(gòu)建不穩(wěn)定,通過在不同分支開發(fā),你將其他開發(fā)者從可能的構(gòu)建失敗中分離出去。 Subversion自己的合并跟蹤特性在一個(gè)分支上開發(fā)了差不多一年。

Graph 1. 兩個(gè)分支的主線開發(fā) (trunk)

Subversion一直支持分支,但與其他系統(tǒng)不同,它不會(huì)真正的拷貝文件,那樣會(huì)快速加大版本庫的體積。相反,Subversion會(huì)創(chuàng)建一個(gè)到原來已有目錄的快速引用,只是記錄分支和trunk的文件修改,這樣的結(jié)果是創(chuàng)建分支非常迅速,版本庫幾乎不會(huì)增加大小。

有些時(shí)候,代碼需要合并。例如,一個(gè)開發(fā)者在維護(hù)分支上修訂了一個(gè)bug,你會(huì)希望將修改合并到主開發(fā)線上,否則,你的下個(gè)發(fā)布還會(huì)有這個(gè)bug。另一個(gè)例子是在分支上開發(fā)一個(gè)新特性。像我們說的,Subversion自己的合并跟蹤特性是在分支上開發(fā)的,在2007年2月,這個(gè)特性足夠穩(wěn)定,然后合并到了trunk。

Graph 2. 合并代碼

讓我們看一個(gè)簡(jiǎn)單的合并實(shí)例,這是我們的代碼:

trunk的代碼 (主碼基)  

main()
{
    printf(”hello, wordn”);
}

現(xiàn)在我們做一個(gè)分支,從用戶的角度會(huì)有兩份代碼:

 

trunk的代碼 (主碼基) 分支代碼
main()
{
 printf(”hello, wordn”);
}
main()
{
 printf(”hello, wordn”);
}

 
“Word”實(shí)際上應(yīng)該為”World”,我們有一個(gè)bug,開發(fā)者在分支上修改了它,文件現(xiàn)在已經(jīng)不同了。
main()
{
 printf(”hello, wordn”);
}
main()
{
 printf(”hello, worldn”);
}

 
在某一時(shí)刻,bug修正合并到了trunk
>>svn merge: Subversion將修改從分支合并到trunk。
main()
{
 printf(”hello, worldn”);
}
main()
{
 printf(”hello, worldn”);
}

2. Subversion與合并

像分支,Subversion一直支持合并,如果你要求它可以自動(dòng)完成許多工作。但是Subversion不會(huì)”記住”什么代碼從什么分支在什么時(shí)候合并,盡管分支與合并在Subversion中工作很好,但是合并跟蹤特性的添加解決了許多限制:

    重復(fù)合并,假設(shè)你有一個(gè)特性分支與主干同步,沒有合并跟蹤時(shí),你必須小心的(且手工的)記錄哪些修訂版本已經(jīng)合并,這會(huì)非常乏味,而且如果你忘了合并特定修改或是創(chuàng)建叫做”偽造的沖突”的東西,這意味著文件沒有正確的合并,結(jié)果修訂版本有錯(cuò)誤。
    審計(jì)。當(dāng)你合并一個(gè)特性分支回trunk,trunk的歷史只記錄了合并的發(fā)生,但是不知道合并了什么,這樣很難準(zhǔn)確找出合并了什么到trunk。

上一頁12下一頁
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd