偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

專(zhuān)家全面剖析SVN合并跟蹤問(wèn)題

開(kāi)發(fā) 項(xiàng)目管理
SVN合并跟蹤你是否了解?在學(xué)習(xí)版本控制工具SVN的過(guò)程中你可能會(huì)遇到這樣的問(wèn)題,在這里向大家介紹一下,希望通過(guò)本文的介紹你能學(xué)到更多的知識(shí)。

本節(jié)和大家一起學(xué)習(xí)一下SVN合并跟蹤,主要從八個(gè)方面來(lái)介紹,希望通過(guò)本節(jié)的學(xué)習(xí),大家能夠掌握有關(guān)SVN合并跟蹤方面的知識(shí)。SVN1.5支持合并跟蹤,本文將對(duì)什么是合并跟蹤,及其對(duì)你們組織具備的意義提供了高級(jí)的總體看法,我將會(huì)從許多基本的解釋開(kāi)始,如果你熟悉分支與合并,請(qǐng)掠過(guò)第1段。

1.什么是分支與合并?

開(kāi)發(fā)團(tuán)隊(duì)經(jīng)常會(huì)在多個(gè)并行線(xiàn)上開(kāi)發(fā),叫做”分支”,一個(gè)分支從拷貝開(kāi)發(fā)項(xiàng)目(或一個(gè)目錄)所有的文件開(kāi)始,然后開(kāi)始單獨(dú)的維護(hù)這個(gè)拷貝,文件開(kāi)始都是相同的,但經(jīng)過(guò)一段時(shí)間,它們將會(huì)不同,因?yàn)椴煌拈_(kāi)發(fā)者在不同分支做出了修改。
為什么分支?你或許在SVN創(chuàng)建一個(gè)分支用來(lái)維護(hù)產(chǎn)品發(fā)布,同時(shí)為下一個(gè)版本工作。為什么?下一個(gè)版本會(huì)有新的特性,但是在維護(hù)分支你只接受bug修改。另一個(gè)用例是開(kāi)發(fā)復(fù)雜的新特性,而它會(huì)將使得開(kāi)發(fā)構(gòu)建不穩(wěn)定,通過(guò)在不同分支開(kāi)發(fā),你將其他開(kāi)發(fā)者從可能的構(gòu)建失敗中分離出去。SVN自己的合并跟蹤特性在一個(gè)分支上開(kāi)發(fā)了差不多一年。

Graph1.兩個(gè)分支的主線(xiàn)開(kāi)發(fā)(trunk)
SVN一直支持分支,但與其他系統(tǒng)不同,它不會(huì)真正的拷貝文件,那樣會(huì)快速加大版本庫(kù)的體積。相反,SVN會(huì)創(chuàng)建一個(gè)到原來(lái)已有目錄的快速引用,只是記錄分支和trunk的文件修改,這樣的結(jié)果是創(chuàng)建分支非常迅速,版本庫(kù)幾乎不會(huì)增加大小。
有些時(shí)候,代碼需要合并。例如,一個(gè)開(kāi)發(fā)者在維護(hù)分支上修訂了一個(gè)bug,你會(huì)希望將修改合并到主開(kāi)發(fā)線(xiàn)上,否則,你的下個(gè)發(fā)布還會(huì)有這個(gè)bug。另一個(gè)例子是在分支上開(kāi)發(fā)一個(gè)新特性。就像我們說(shuō)的,SVN自己的合并跟蹤特性就是在分支上開(kāi)發(fā)的,在2007年2月,這個(gè)特性足夠穩(wěn)定,然后合并到了trunk。

Graph2.合并代碼

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

trunk的代碼(主碼基)
main(){printf(”hello,wordn”);}
現(xiàn)在我們做一個(gè)分支,從用戶(hù)的角度會(huì)有兩份代碼:

trunk的代碼(主碼基)
分支代碼
main(){printf(”hello,wordn”);}main(){printf(”hello,wordn”);}
“Word”實(shí)際上應(yīng)該為”World”,我們有一個(gè)bug,開(kāi)發(fā)者在分支上修改了它,文件現(xiàn)在已經(jīng)不同了。
main(){printf(”hello,wordn”);}main(){printf(”hello,worldn”);}
在某一時(shí)刻,bug修正合并到了trunk
>>svnmerge:SVN將修改從分支合并到trunk。
main(){printf(”hello,worldn”);}main(){printf(”hello,worldn”);}

2.SVN與合并

就像分支,SVN一直支持合并,如果你要求它可以自動(dòng)完成許多工作。但是SVN不會(huì)”記住”什么代碼從什么分支在什么時(shí)候合并,盡管分支與合并在SVN中工作很好,但是合并跟蹤特性的添加解決了許多限制:
重復(fù)合并,假設(shè)你有一個(gè)特性分支與主干同步,沒(méi)有合并跟蹤時(shí),你必須小心的(且手工的)記錄哪些修訂版本已經(jīng)合并,這會(huì)非常乏味,而且如果你忘了合并特定修改或是創(chuàng)建叫做”偽造的沖突”的東西,這意味著文件沒(méi)有正確的合并,結(jié)果修訂版本有錯(cuò)誤。
審計(jì)。當(dāng)你合并一個(gè)特性分支回trunk,trunk的歷史只記錄了合并的發(fā)生,但是不知道合并了什么,這樣就很難準(zhǔn)確找出合并了什么到trunk。

3.這對(duì)你意味著什么?

開(kāi)發(fā)團(tuán)隊(duì)多年里成功使用SVN分支和合并,但是SVN合并跟蹤提供了許多好處:
合并跟蹤添加了審計(jì)/跟蹤能力(那些代碼合并了,何時(shí),何地?)。許多組織因?yàn)楣芾砟康男枰@個(gè)特性。
合并跟蹤減少了錯(cuò)誤和管理費(fèi)用。團(tuán)隊(duì)會(huì)因?yàn)镾VN的合并跟蹤功能提高生產(chǎn)力。
經(jīng)常合并很重要。兩個(gè)開(kāi)始相同的文件會(huì)隨著時(shí)間變得很不一樣,不同的越多,越難以合并。如果經(jīng)常合并,增量的區(qū)別會(huì)比較小,會(huì)易于合并。合并跟蹤可以使得易于經(jīng)常合并。
許多選擇SVN的公司采用限制分支的策略,他們不能從好的分支策略和并行開(kāi)發(fā)中得到好處,例如:他們選擇在主開(kāi)發(fā)線(xiàn)開(kāi)發(fā)一個(gè)風(fēng)險(xiǎn)很大的新特性,結(jié)果就是項(xiàng)目成員要處理經(jīng)常的構(gòu)建錯(cuò)誤。
最終的好處:一些公司還沒(méi)有使用SVN,而使用傳統(tǒng)的昂貴的工具,他們?cè)诘却喜⒏櫋?/p>

4.SVN合并跟蹤

SVN1.5記錄合并時(shí)發(fā)生的事情:它會(huì)跟蹤合并,所以下一次SVN會(huì)記住上一次合并的事情,這個(gè)特性支持了下面的用例:
重復(fù)合并:本周將分支合并到另一個(gè)分支,下一周再做一遍。SVN會(huì)記住已經(jīng)合并的東西,而且只合并新的修改。
沖突解決的自動(dòng)合并。SVN可以自動(dòng)完成合并的大多數(shù)工作,但是合并不可避免的帶來(lái)沖突,SVN的內(nèi)部合并算法不能解決。如果這樣,SVN會(huì)告訴用戶(hù)手工解決沖突。MarkPhippard的講了這個(gè)問(wèn)題。
Cherrypicking:合并只針對(duì)一個(gè)或部分修改,而不是所有的修改。
記錄手工合并:有時(shí)候用戶(hù)會(huì)手工合并一些東西(使用編輯器從一個(gè)文件拷貝代碼到另一個(gè)文件),SVN1.5具備明確添加手工合并的能力,所以合并跟蹤信息依然完整。
合并回退:取消一個(gè)合并。合并經(jīng)常不是很***,你會(huì)發(fā)現(xiàn)一些事情出了問(wèn)題,SVN允許你取消合并。
合并審計(jì):合并數(shù)據(jù)會(huì)自動(dòng)添加到提交日志(MarkPhippard也講了這個(gè)問(wèn)題)。

5.GUI客戶(hù)端和合并跟蹤

如果SVN的GUI客戶(hù)端支持它,合并跟蹤會(huì)真的非常強(qiáng)大。GUI客戶(hù)端會(huì)利用合并跟蹤特性讓合并易于使用,而且對(duì)所有用戶(hù)都更加接近。CollabNet在一個(gè)Eclipse的合并跟蹤客戶(hù)端上工作,未來(lái)的幾天可能會(huì)有一個(gè)預(yù)覽,openCollabNet這里。
SVN1.5對(duì)客戶(hù)端有一個(gè)反饋,例如:有時(shí)候SVN不能自動(dòng)合并兩個(gè)文件,需要開(kāi)發(fā)者解決”合并沖突”,SVN會(huì)告訴客戶(hù),由客戶(hù)來(lái)決定怎樣做,例如Subclipse會(huì)將沖突文件發(fā)送到Eclipse的圖形化diff工具,所以用戶(hù)可以解決這個(gè)沖突(它實(shí)際上進(jìn)行了3方diff,但是那超出了本文的范圍)。

6.SVN合并跟蹤早期采用計(jì)劃

為了加快SVN1.5的合并跟蹤特性的開(kāi)發(fā),CollabNet在openCollabNet開(kāi)始了一個(gè)MergeTrackingEarlyAdopterProgram,在這個(gè)程序里你可以看到:
SVN合并跟蹤設(shè)計(jì)文檔。
包含合并跟蹤特性的SVN1.5預(yù)發(fā)布程序
一個(gè)包含合并跟蹤歷史的實(shí)例SVN版本庫(kù)
一個(gè)與CollabNet的SVN提交者和其他人討論這個(gè)特性的論壇
缺陷報(bào)告和改進(jìn)請(qǐng)求
很快也會(huì)發(fā)布GUI客戶(hù)端
你可以在這里找到程序:http://merge-tracking.open.collab.net

7.下面是什么?

合并跟蹤的主張很直接:”SVN以前沒(méi)有這個(gè)功能,現(xiàn)在有了”,你準(zhǔn)備好了嗎?
如果你正在因?yàn)椴幌胩幚砺闊┑氖止ず喜⒏櫠鵀榉种кP躇,你或許可以重新思考一下分支策略,來(lái)充分利用在不同分支并行開(kāi)發(fā)的好處。在9月26日,CollabNet會(huì)組織一個(gè)關(guān)于分支策略的webinar,CollabNet的SVN顧問(wèn)BobJenkins和AukeJilderda會(huì)解釋不同的分支策略,并展示SVN1.5如何支持他們。這里注冊(cè)。
合并跟蹤改進(jìn)了合并的質(zhì)量,添加了跟蹤能力。加入MergeTrackingEarlyAdopterprogram,現(xiàn)在就開(kāi)始學(xué)習(xí)這個(gè)新特性。下載我們的客戶(hù)端并使用,它將會(huì)幫助我們?yōu)镾VN1.5做好準(zhǔn)備。
如果你因?yàn)榈却喜⒏櫠€沒(méi)有部署SVN,現(xiàn)在是你離開(kāi)你的遺留工具而使用SVN的時(shí)候了。

8.背景:CollabNet與SVN合并跟蹤

CollabNet強(qiáng)烈的投入到合并跟蹤特性的開(kāi)發(fā):
CollabNet組織了需求收集的客戶(hù)峰會(huì)(2006年1月)。
CollabNet雇員編寫(xiě)了大多數(shù)規(guī)格。
CollabNet領(lǐng)導(dǎo)了合并跟蹤特性的開(kāi)發(fā)力量。
我們開(kāi)始了MergeTrackingEarlyAdopterProgram。
CollabNet開(kāi)發(fā)了合并跟蹤的GUI客戶(hù)端
核對(duì)前幾日的blog可以得到GUI客戶(hù)端的信息,并且注冊(cè)SVN1.5的分支與合并webinar。

【編輯推薦】

  1. 專(zhuān)家提醒:SVN合并時(shí)應(yīng)注意的關(guān)鍵問(wèn)題
  2. SVN分支資深專(zhuān)家專(zhuān)題講解
  3. SVN分支與合并實(shí)例剖析
  4. 專(zhuān)家實(shí)例講解SVN分支和合并問(wèn)題
  5. SVN分支與合并之專(zhuān)家課堂

 

 

責(zé)任編輯:佚名 來(lái)源: it168.com
相關(guān)推薦

2010-05-28 15:47:29

SVN分支

2010-05-28 15:57:20

SVN分支

2010-06-01 19:47:29

SVN分支與合并

2010-06-01 12:36:04

SVN分支與合并

2010-05-20 15:32:38

SVN分支與合并

2010-06-01 12:19:27

SVN分支與合并

2010-06-01 10:37:15

SVN合并

2010-05-27 09:41:05

SVN沖突

2010-05-28 17:00:24

SVN分支與合并

2010-06-07 17:50:52

UML

2010-05-27 12:58:07

SVN升級(jí)

2010-05-31 13:54:52

2010-06-02 20:07:39

SVN管理系統(tǒng)

2010-06-01 15:58:14

SVN錯(cuò)誤

2009-10-19 10:52:48

綜合布線(xiàn)市場(chǎng)

2010-05-06 20:45:37

2010-05-24 16:58:44

SVN安裝

2010-05-26 10:32:47

SVN管理

2010-05-24 17:13:17

SVN安裝

2010-05-19 18:46:59

SVN服務(wù)器配置
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)