自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

專家全面剖析SVN合并跟蹤問題

開發(fā) 項目管理
SVN合并跟蹤你是否了解?在學習版本控制工具SVN的過程中你可能會遇到這樣的問題,在這里向大家介紹一下,希望通過本文的介紹你能學到更多的知識。

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

1.什么是分支與合并?

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

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

Graph2.合并代碼

讓我們看一個簡單的SVN合并跟蹤中合并實例,這是我們的代碼:

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

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

2.SVN與合并

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

3.這對你意味著什么?

開發(fā)團隊多年里成功使用SVN分支和合并,但是SVN合并跟蹤提供了許多好處:
合并跟蹤添加了審計/跟蹤能力(那些代碼合并了,何時,何地?)。許多組織因為管理目的需要這個特性。
合并跟蹤減少了錯誤和管理費用。團隊會因為SVN的合并跟蹤功能提高生產力。
經常合并很重要。兩個開始相同的文件會隨著時間變得很不一樣,不同的越多,越難以合并。如果經常合并,增量的區(qū)別會比較小,會易于合并。合并跟蹤可以使得易于經常合并。
許多選擇SVN的公司采用限制分支的策略,他們不能從好的分支策略和并行開發(fā)中得到好處,例如:他們選擇在主開發(fā)線開發(fā)一個風險很大的新特性,結果就是項目成員要處理經常的構建錯誤。
最終的好處:一些公司還沒有使用SVN,而使用傳統的昂貴的工具,他們在等待合并跟蹤。

4.SVN合并跟蹤

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

5.GUI客戶端和合并跟蹤

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

6.SVN合并跟蹤早期采用計劃

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

7.下面是什么?

合并跟蹤的主張很直接:”SVN以前沒有這個功能,現在有了”,你準備好了嗎?
如果你正在因為不想處理麻煩的手工合并跟蹤而為分支躊躇,你或許可以重新思考一下分支策略,來充分利用在不同分支并行開發(fā)的好處。在9月26日,CollabNet會組織一個關于分支策略的webinar,CollabNet的SVN顧問BobJenkins和AukeJilderda會解釋不同的分支策略,并展示SVN1.5如何支持他們。這里注冊。
合并跟蹤改進了合并的質量,添加了跟蹤能力。加入MergeTrackingEarlyAdopterprogram,現在就開始學習這個新特性。下載我們的客戶端并使用,它將會幫助我們?yōu)镾VN1.5做好準備。
如果你因為等待合并跟蹤而還沒有部署SVN,現在是你離開你的遺留工具而使用SVN的時候了。

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

CollabNet強烈的投入到合并跟蹤特性的開發(fā):
CollabNet組織了需求收集的客戶峰會(2006年1月)。
CollabNet雇員編寫了大多數規(guī)格。
CollabNet領導了合并跟蹤特性的開發(fā)力量。
我們開始了MergeTrackingEarlyAdopterProgram。
CollabNet開發(fā)了合并跟蹤的GUI客戶端
核對前幾日的blog可以得到GUI客戶端的信息,并且注冊SVN1.5的分支與合并webinar。

【編輯推薦】

  1. 專家提醒:SVN合并時應注意的關鍵問題
  2. SVN分支資深專家專題講解
  3. SVN分支與合并實例剖析
  4. 專家實例講解SVN分支和合并問題
  5. SVN分支與合并之專家課堂

 

 

責任編輯:佚名 來源: it168.com
相關推薦

2010-05-28 15:47:29

SVN分支

2010-05-28 15:57:20

SVN分支

2010-06-01 12:36:04

SVN分支與合并

2010-06-01 19:47:29

SVN分支與合并

2010-06-01 12:19:27

SVN分支與合并

2010-05-20 15:32:38

SVN分支與合并

2010-05-28 17:00:24

SVN分支與合并

2010-06-01 10:37:15

SVN合并

2010-05-27 12:58:07

SVN升級

2010-05-27 09:41:05

SVN沖突

2010-06-07 17:50:52

UML

2010-05-31 13:54:52

2010-06-02 20:07:39

SVN管理系統

2009-10-19 10:52:48

綜合布線市場

2010-06-01 15:58:14

SVN錯誤

2010-05-24 16:58:44

SVN安裝

2010-05-26 10:32:47

SVN管理

2010-05-06 20:45:37

2010-05-24 17:13:17

SVN安裝

2010-05-19 18:46:59

SVN服務器配置
點贊
收藏

51CTO技術棧公眾號