3. 這對(duì)你意味著什么?
開(kāi)發(fā)團(tuán)隊(duì)多年里成功使用Subversion分支和合并,但是合并跟蹤提供了許多好處:
合并跟蹤添加了審計(jì)/跟蹤能力(那些代碼合并了,何時(shí),何地?)。許多組織因?yàn)楣芾砟康男枰@個(gè)特性。
合并跟蹤減少了錯(cuò)誤和管理費(fèi)用。團(tuán)隊(duì)會(huì)因?yàn)镾ubversion的合并跟蹤功能提高生產(chǎn)力。
經(jīng)常合并很重要。兩個(gè)開(kāi)始相同的文件會(huì)隨著時(shí)間變得很不一樣,不同的越多,越難以合并。如果經(jīng)常合并,增量的區(qū)別會(huì)比較小,會(huì)易于合并。合并跟蹤可以使得易于經(jīng)常合并。
許多選擇Subversion的公司采用限制分支的策略,他們不能從好的分支策略和并行開(kāi)發(fā)中得到好處,例如:他們選擇在主開(kāi)發(fā)線開(kāi)發(fā)一個(gè)風(fēng)險(xiǎn)很大的新特性,結(jié)果是項(xiàng)目成員要處理經(jīng)常的構(gòu)建錯(cuò)誤。
終的好處:一些公司還沒(méi)有使用Subversion,而使用傳統(tǒng)的昂貴的工具,他們?cè)诘却喜⒏櫋?/p>
4. Subversion 1.5的合并跟蹤
Subversion 1.5記錄合并時(shí)發(fā)生的事情:它會(huì)跟蹤合并,所以下一次Subversion會(huì)記住上一次合并的事情,這個(gè)特性支持了下面的用例:
重復(fù)合并:本周將分支合并到另一個(gè)分支,下一周再做一遍。Subversion會(huì)記住已經(jīng)合并的東西,而且只合并新的修改。
沖突解決的自動(dòng)合并。Subversion可以自動(dòng)完成合并的大多數(shù)工作,但是合并不可避免的帶來(lái)沖突,Subversion的內(nèi)部合并算法不能解決。如果這樣,Subversion會(huì)告訴用戶(hù)手工解決沖突。Mark Phippard的講了這個(gè)問(wèn)題。
Cherry picking:合并只針對(duì)一個(gè)或部分修改,而不是所有的修改。
記錄手工合并:有時(shí)候用戶(hù)會(huì)手工合并一些東西(使用編輯器從一個(gè)文件拷貝代碼到另一個(gè)文件),Subversion 1.5具備明確添加手工合并的能力,所以合并跟蹤信息依然完整。
合并回退:取消一個(gè)合并。合并經(jīng)常不是很完美,你會(huì)發(fā)現(xiàn)一些事情出了問(wèn)題,Subversion允許你取消合并。
合并審計(jì):合并數(shù)據(jù)會(huì)自動(dòng)添加到提交日志(Mark Phippard也講了這個(gè)問(wèn)題)。
5. GUI客戶(hù)端和合并跟蹤
如果Subversion的GUI客戶(hù)端支持它,合并跟蹤會(huì)真的非常強(qiáng)大。GUI客戶(hù)端會(huì)利用合并跟蹤特性讓合并易于使用,而且對(duì)所有用戶(hù)都更加接近。CollabNet在一個(gè)Eclipse的合并跟蹤客戶(hù)端上工作,未來(lái)的幾天可能會(huì)有一個(gè)預(yù)覽,openCollabNet這里。
Subversion 1.5對(duì)客戶(hù)端有一個(gè)反饋,例如:有時(shí)候Subversion不能自動(dòng)合并兩個(gè)文件,需要開(kāi)發(fā)者解決”合并沖突”,Subversion會(huì)告訴客戶(hù),由客戶(hù)來(lái)決定怎樣做,例如Subclipse會(huì)將沖突文件發(fā)送到Eclipse的圖形化diff工具,所以用戶(hù)可以解決這個(gè)沖突(它實(shí)際上進(jìn)行了3方 diff,但是那超出了本文的范圍)。
6. 合并跟蹤早期采用計(jì)劃
為了加快Subversion 1.5的合并跟蹤特性的開(kāi)發(fā),CollabNet在openCollabNet開(kāi)始了一個(gè)Merge Tracking Early Adopter Program,在這個(gè)程序里你可以看到:
Subversion合并跟蹤設(shè)計(jì)文檔。
包含合并跟蹤特性的Subversion 1.5預(yù)發(fā)布程序
一個(gè)包含合并跟蹤歷史的實(shí)例Subversion版本庫(kù)
一個(gè)與CollabNet的Subversion提交者和其他人討論這個(gè)特性的論壇
缺陷報(bào)告和改進(jìn)請(qǐng)求
很快也會(huì)發(fā)布GUI客戶(hù)端
你可以在這里找到程序:http://merge-tracking.open.collab.net
7. 下面是什么?
合并跟蹤的主張很直接:”Subversion以前沒(méi)有這個(gè)功能,現(xiàn)在有了”,你準(zhǔn)備好了嗎?
如果你正在因?yàn)椴幌胩幚砺闊┑氖止ず喜⒏櫠鵀榉种кP躇,你或許可以重新思考一下分支策略,來(lái)充分利用在不同分支并行開(kāi)發(fā)的好處。在9月26日, CollabNet會(huì)組織一個(gè)關(guān)于分支策略的webinar,CollabNet的Subversion顧問(wèn)Bob Jenkins和Auke Jilderda會(huì)解釋不同的分支策略,并展示Subversion 1.5如何支持他們。這里注冊(cè)。
合并跟蹤改進(jìn)了合并的質(zhì)量,添加了跟蹤能力。加入Merge Tracking Early Adopter program,現(xiàn)在開(kāi)始學(xué)習(xí)這個(gè)新特性。下載我們的客戶(hù)端并使用,它將會(huì)幫助我們?yōu)镾ubversion 1.5做好準(zhǔn)備。
如果你因?yàn)榈却喜⒏櫠沒(méi)有部署Subversion,現(xiàn)在是你離開(kāi)你的遺留工具而使用Subversion的時(shí)候了。
8. 背景:CollabNet與合并跟蹤
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)始了Merge Tracking Early Adopter Program。
CollabNet開(kāi)發(fā)了合并跟蹤的GUI客戶(hù)端