ClearCase的核心功能是版本控制,它是對(duì)在軟件開發(fā)進(jìn)程中一個(gè)文件或一個(gè)目錄發(fā)展過(guò)程進(jìn)行追蹤的手段。ClearCase對(duì)所有文件系統(tǒng)對(duì)象(包括文件、目錄和鏈接)增強(qiáng)了版本控制系統(tǒng)功能。可定版本的文件包括源代碼、可執(zhí)行文件、位圖文件、需求文檔、設(shè)計(jì)說(shuō)明、測(cè)試計(jì)劃、和一些ASCII和非ASCII文件。目錄的版本記錄了整個(gè)組織基礎(chǔ)資源的發(fā)展?fàn)顩r,包括源文件的建立、重新命名、重新構(gòu)造和刪除操作等。 這種版本控制系統(tǒng)提供了先進(jìn)的版本分支和歸并功能用于支持并行開發(fā)。
控制任何文件的版本
ClearCase可以對(duì)每一個(gè)軟件組件或元件的版本進(jìn)行維護(hù)和控制。ClearCase也可以維護(hù)一個(gè)非文本文件、目錄和工具的版本。正如:它可以管理庫(kù)文件、編譯器、需求文檔、 測(cè)試包和數(shù)據(jù)庫(kù)而不僅僅是源代碼。
ClearCase的元件類型可以管理版本內(nèi)容。用戶可以定義自己的元件類型,也可以使用ClearCase中的預(yù)定義類型:文本文件、壓縮文本文件、文件、壓縮文件和二進(jìn)制增量文件。
ClearCase可以利用增量算法將文本文件存儲(chǔ)在一個(gè)特殊結(jié)構(gòu)的文件容器中。ClearCase采用標(biāo)準(zhǔn)的壓縮技術(shù)和增量算法存儲(chǔ)一個(gè)壓縮文本文件。(這比以往的存儲(chǔ)形式節(jié)省了50%―70%的存儲(chǔ)空間。)
這種元件類型文件和壓縮文件可以被用于控制任何操作系統(tǒng)文件──比如,可執(zhí)行程序、程序資源庫(kù)、結(jié)構(gòu)數(shù)據(jù)庫(kù)和結(jié)構(gòu)文檔文件。二進(jìn)制增量文件類型可以隨時(shí)被用于二進(jìn)制文件格式。
在版本樹中組織元件發(fā)展的過(guò)程
在ClearCase中,元件版本的組織體現(xiàn)在版本樹結(jié)構(gòu)中。一個(gè)版本書的結(jié)構(gòu)可以按目錄結(jié)構(gòu)定制, 還可以包含多層分支和子分支。
在一個(gè)典型的開發(fā)環(huán)境中,很多元件的版本樹結(jié)構(gòu)最初僅包含一個(gè)分支,即, 元件的版本排列在同一條線型隊(duì)列中。隨著時(shí)間的發(fā)展,當(dāng)用戶做一些錯(cuò)誤修復(fù)、代碼的組織、一些實(shí)驗(yàn)性修改或指定平臺(tái)的開發(fā)時(shí),它們可以給一些相關(guān)元件定義子分支,從而脫離主干進(jìn)行開發(fā)。ClearCase可以支持多級(jí)的分支操作,還可以給版本或分支命名。
對(duì)目錄和子目錄進(jìn)行版本控制
ClearCase可以對(duì)目錄和子目錄進(jìn)行版本控制,允許開發(fā)者對(duì)他們數(shù)據(jù)的組織發(fā)展過(guò)程進(jìn)行追蹤。目錄版本對(duì)一些改變進(jìn)行控制,如:建立一個(gè)新文件、修改文件名、 建立新的子目錄或在目錄間移動(dòng)文件等。
ClearCase也支持對(duì)目錄自動(dòng)進(jìn)行比較和歸并的操作。
存儲(chǔ)數(shù)據(jù)在一個(gè)可訪問(wèn)的版本對(duì)象類中(VOBS)
ClearCase把所有版本控制的數(shù)據(jù)存放在一個(gè)永久、安全的存儲(chǔ)區(qū)中,這個(gè)存儲(chǔ)區(qū)被稱為版本對(duì)象類(Version Object Bases),項(xiàng)目團(tuán)隊(duì)(或管理者)可以決定它們所需要的VOBs的數(shù)量,可以決定什么樣的目錄或文件需要被維護(hù)。VOBs不僅是一個(gè)可連接的文件系統(tǒng)而且也是網(wǎng)上的資源──主機(jī)可以連接任何數(shù)量的VOBs.
ClearCase VOBs的組成模式跟UNIX、Windows NT的文件系統(tǒng)和分布式的數(shù)據(jù)庫(kù)系統(tǒng)非常類似。ClearCase采用Raima數(shù)據(jù)管理機(jī)制區(qū)維護(hù)VOB數(shù)據(jù)庫(kù)。當(dāng)在ClearCase中連接和訪問(wèn)時(shí),VOB象一個(gè)標(biāo)準(zhǔn)的軟件作為目錄樹的形式出現(xiàn)在客戶面前,包含標(biāo)準(zhǔn)的文件對(duì)象:目錄、文件、符號(hào)鏈接和硬鏈接。但事實(shí)上,文件系統(tǒng)已經(jīng)有廣泛的版本控制組件:它包含目錄元素、目錄元素版本、文件元素、文件元素版本、VOB動(dòng)態(tài)鏈接和VOB硬鏈接。開發(fā)者也可以查看和這些文件系統(tǒng)對(duì)象相關(guān)的數(shù)據(jù)。這些數(shù)據(jù)包括事件記錄,建立審核以及用戶定義的項(xiàng)如:版本標(biāo)簽和屬性。
使用常見的檢出/編輯/檢入范例
ClearCase的命令可以控制元素的變化,確保存儲(chǔ)區(qū)有序的繁衍并使數(shù)據(jù)損壞的程度達(dá)到最小。ClearCase采用一種檢出/編輯后檢入的范例,類似于傳統(tǒng)的版本控制工具如:RCS和SCCS。ClearCase除了可以進(jìn)行檢出、檢入以及非檢出操作外,它還可以通過(guò)命令設(shè)置另外的操作,如:刪除版本、建立/刪除分枝、可按時(shí)間順序排列或結(jié)構(gòu)排列順序列出版本歷史、比較版本間的差異,并且可以歸并并行開發(fā)的版本。
當(dāng)開始對(duì)于一個(gè)指定的文件進(jìn)行工作時(shí),該文件具有只讀屬性──這意味著它不能被編輯或刪除。而檢出操作可以對(duì)該文件的最近版本形成一個(gè)可編輯的拷貝。它無(wú)須將文件拷貝到另一區(qū)域工作。檢出的注釋可以被提供。當(dāng)編輯完成后,該文件被檢入,于是在版本樹中形成一個(gè)新的版本并且將可編輯的拷貝刪除。為了檢驗(yàn)文件的變化,在檢入過(guò)程中可以填入注釋信息。文件一旦被檢入,即刻回復(fù)到只讀狀態(tài)成為共享數(shù)據(jù),可被所有成員使用。
ClearCase支持兩種檢出,保留以及非保留。保留檢出可以保證版本歷史形成的正確范圍,并且同時(shí)只允許一個(gè)人做保留檢出的操作。非保留檢出無(wú)須保證建立一個(gè)成功的版本,如果多個(gè)用戶同時(shí)對(duì)同一元素執(zhí)行非保留檢出,也企圖進(jìn)行檢入操作,那么第一個(gè)檢入操作被允許,而其他用戶必須通過(guò)歸并操作合并它們的結(jié)果。
豐富的注釋信息和版本數(shù)據(jù)的報(bào)表
ClearCase存儲(chǔ)了和文件系統(tǒng)對(duì)象相關(guān)又截然不同的信息類。這些信息實(shí)際上并不包含在對(duì)象中,它是一些額外數(shù)據(jù)。這些數(shù)據(jù)可以由ClearCase產(chǎn)生,也可以由用戶自己定義。在VOB數(shù)據(jù)庫(kù)中存儲(chǔ)了所有的數(shù)據(jù)。
ClearCase產(chǎn)生的這種數(shù)據(jù)信息提供了可靠的、面向文件系統(tǒng)的版本注釋信息。比如:這些數(shù)據(jù)可以驗(yàn)證在某一時(shí)刻,元素A建立了一個(gè)新的版本。用戶定義的數(shù)據(jù)可以用來(lái)表達(dá)額外的功能──比如:該文件的版本曾被用于構(gòu)造應(yīng)用系統(tǒng)的4.31版。
ClearCase的操作(如:檢出、檢入、和版本歸并)可以建立時(shí)間記錄,記錄數(shù)據(jù)包含這些操作信息。這些記錄被存儲(chǔ)在VOB數(shù)據(jù)庫(kù)中,主要描述了該操作的屬性"誰(shuí)做的、做什么、什么時(shí)候、在哪個(gè)地方及為什么",比如:敲入命令的人員的ID號(hào),操作的種類,操作的時(shí)間,主機(jī)名稱及用戶填入的描述??梢酝ㄟ^(guò)"lshistory"的命令顯示存儲(chǔ)在VOB中的事件記錄,并且可以通過(guò)歷史信息瀏覽器提供的圖形接口觀察VOB中的事件記錄。
用戶可以針對(duì)多種目的定義數(shù)據(jù),包含分支的名稱、版本標(biāo)簽、元素任一版本的注釋信息。
ClearCase數(shù)據(jù)的另一種應(yīng)用是形成注釋的文本文件。注釋命令可以通過(guò)行顯示的形式列出任何一個(gè)版本文本文件的內(nèi)容,這使得我們可以更容易的看到什么時(shí)候在不同的地方做了添加或刪除的操作。
ClearCase也可以針對(duì)文件系統(tǒng)對(duì)象建立客戶報(bào)表。而報(bào)表的種類可以由用戶自己定制輸出格式。
通過(guò)分支功能支持并行開發(fā)
ClearCase支持并行(同時(shí))開發(fā),每一個(gè)元素都可以沿著不同的分枝同時(shí)發(fā)展,即新的版本加到獨(dú)立的分支上。ClearCase可以很容易的產(chǎn)生分支,也可以很容易的將不同分支進(jìn)行合并。這樣一來(lái),即便某一部分的工作被凍結(jié)或加鎖,開發(fā)者仍然可以繼續(xù)自己的工作(如:在軟件集成期)。在這種情況,開發(fā)者可以在分支上工作,我們知道, ClearCase的自動(dòng)化操作和圖形歸并工具可以讓我們很容易的重新集成新的工作。
并行開發(fā)是非常重要的,因?yàn)椋?BR> (1)它允許不同的項(xiàng)目在同一時(shí)間使用同一資源樹。
(2)它將目前不可和其他人員共享的修改成果進(jìn)行隔離。
(3)它將絕對(duì)不可和其他人員共享的修改成果進(jìn)行隔離(如:已發(fā)布版本中的錯(cuò)誤修復(fù))。
(4)它使得在軟件集成期間開發(fā)工作無(wú)需停止,程序員可以先在分枝上開發(fā),以后再集成。
為了支持并行開發(fā),ClearCase允許進(jìn)行分支建立,追蹤分支的使用,文件比較,自動(dòng)歸并功能。
自動(dòng)的比較和版本間的歸并
并行開發(fā)的特點(diǎn)是對(duì)同一元素的不同版本進(jìn)行定期比較,也需要對(duì)版本間內(nèi)容進(jìn)行歸并。在ClearCase中,對(duì)于元素或文本文件進(jìn)行比較和歸并的操作有兩種:基于字符型和圖形界面型。其中,diff命令執(zhí)行多文件比較,不執(zhí)行歸并。而歸并命令可以處理32個(gè)"成員",并把它們生成一個(gè)獨(dú)立的文件。 ClearCase可以自動(dòng)辨認(rèn)歸并選項(xiàng)并實(shí)現(xiàn)歸并。ClearCase也可以對(duì)需要?dú)w并的項(xiàng)目元素進(jìn)行定位。如果所有的"成員"(歸并元素)是同一元素的版本,系統(tǒng)會(huì)自動(dòng)確定基礎(chǔ)"成員",通常是最低版本。此外,ClearCase會(huì)記錄基礎(chǔ)版本和某一歸并元素版本間的差異。如果,所有的"成員"間差異互不相同,ClearCase會(huì)自動(dòng)建立歸并版本。如果兩個(gè)或多個(gè)歸并"成員"文件內(nèi)容部分不同,歸并功能會(huì)提示開發(fā)者選擇歸并內(nèi)容。ClearCase也可以實(shí)現(xiàn)反向歸并――從主分支向子分支歸并。
ClearCase的加歸并功能可以在歸并其它分支時(shí)選擇指定的版本(那些在分支上自始至終進(jìn)行變化的版本)。負(fù)歸并操作可以刪除部分版本差異,從而形成一個(gè)新的版本,該版本除了那些被刪除的變更外包含所有的改變。
控制任何文件的版本
ClearCase可以對(duì)每一個(gè)軟件組件或元件的版本進(jìn)行維護(hù)和控制。ClearCase也可以維護(hù)一個(gè)非文本文件、目錄和工具的版本。正如:它可以管理庫(kù)文件、編譯器、需求文檔、 測(cè)試包和數(shù)據(jù)庫(kù)而不僅僅是源代碼。
ClearCase的元件類型可以管理版本內(nèi)容。用戶可以定義自己的元件類型,也可以使用ClearCase中的預(yù)定義類型:文本文件、壓縮文本文件、文件、壓縮文件和二進(jìn)制增量文件。
ClearCase可以利用增量算法將文本文件存儲(chǔ)在一個(gè)特殊結(jié)構(gòu)的文件容器中。ClearCase采用標(biāo)準(zhǔn)的壓縮技術(shù)和增量算法存儲(chǔ)一個(gè)壓縮文本文件。(這比以往的存儲(chǔ)形式節(jié)省了50%―70%的存儲(chǔ)空間。)
這種元件類型文件和壓縮文件可以被用于控制任何操作系統(tǒng)文件──比如,可執(zhí)行程序、程序資源庫(kù)、結(jié)構(gòu)數(shù)據(jù)庫(kù)和結(jié)構(gòu)文檔文件。二進(jìn)制增量文件類型可以隨時(shí)被用于二進(jìn)制文件格式。
在版本樹中組織元件發(fā)展的過(guò)程
在ClearCase中,元件版本的組織體現(xiàn)在版本樹結(jié)構(gòu)中。一個(gè)版本書的結(jié)構(gòu)可以按目錄結(jié)構(gòu)定制, 還可以包含多層分支和子分支。
在一個(gè)典型的開發(fā)環(huán)境中,很多元件的版本樹結(jié)構(gòu)最初僅包含一個(gè)分支,即, 元件的版本排列在同一條線型隊(duì)列中。隨著時(shí)間的發(fā)展,當(dāng)用戶做一些錯(cuò)誤修復(fù)、代碼的組織、一些實(shí)驗(yàn)性修改或指定平臺(tái)的開發(fā)時(shí),它們可以給一些相關(guān)元件定義子分支,從而脫離主干進(jìn)行開發(fā)。ClearCase可以支持多級(jí)的分支操作,還可以給版本或分支命名。
對(duì)目錄和子目錄進(jìn)行版本控制
ClearCase可以對(duì)目錄和子目錄進(jìn)行版本控制,允許開發(fā)者對(duì)他們數(shù)據(jù)的組織發(fā)展過(guò)程進(jìn)行追蹤。目錄版本對(duì)一些改變進(jìn)行控制,如:建立一個(gè)新文件、修改文件名、 建立新的子目錄或在目錄間移動(dòng)文件等。
ClearCase也支持對(duì)目錄自動(dòng)進(jìn)行比較和歸并的操作。
存儲(chǔ)數(shù)據(jù)在一個(gè)可訪問(wèn)的版本對(duì)象類中(VOBS)
ClearCase把所有版本控制的數(shù)據(jù)存放在一個(gè)永久、安全的存儲(chǔ)區(qū)中,這個(gè)存儲(chǔ)區(qū)被稱為版本對(duì)象類(Version Object Bases),項(xiàng)目團(tuán)隊(duì)(或管理者)可以決定它們所需要的VOBs的數(shù)量,可以決定什么樣的目錄或文件需要被維護(hù)。VOBs不僅是一個(gè)可連接的文件系統(tǒng)而且也是網(wǎng)上的資源──主機(jī)可以連接任何數(shù)量的VOBs.
ClearCase VOBs的組成模式跟UNIX、Windows NT的文件系統(tǒng)和分布式的數(shù)據(jù)庫(kù)系統(tǒng)非常類似。ClearCase采用Raima數(shù)據(jù)管理機(jī)制區(qū)維護(hù)VOB數(shù)據(jù)庫(kù)。當(dāng)在ClearCase中連接和訪問(wèn)時(shí),VOB象一個(gè)標(biāo)準(zhǔn)的軟件作為目錄樹的形式出現(xiàn)在客戶面前,包含標(biāo)準(zhǔn)的文件對(duì)象:目錄、文件、符號(hào)鏈接和硬鏈接。但事實(shí)上,文件系統(tǒng)已經(jīng)有廣泛的版本控制組件:它包含目錄元素、目錄元素版本、文件元素、文件元素版本、VOB動(dòng)態(tài)鏈接和VOB硬鏈接。開發(fā)者也可以查看和這些文件系統(tǒng)對(duì)象相關(guān)的數(shù)據(jù)。這些數(shù)據(jù)包括事件記錄,建立審核以及用戶定義的項(xiàng)如:版本標(biāo)簽和屬性。
使用常見的檢出/編輯/檢入范例
ClearCase的命令可以控制元素的變化,確保存儲(chǔ)區(qū)有序的繁衍并使數(shù)據(jù)損壞的程度達(dá)到最小。ClearCase采用一種檢出/編輯后檢入的范例,類似于傳統(tǒng)的版本控制工具如:RCS和SCCS。ClearCase除了可以進(jìn)行檢出、檢入以及非檢出操作外,它還可以通過(guò)命令設(shè)置另外的操作,如:刪除版本、建立/刪除分枝、可按時(shí)間順序排列或結(jié)構(gòu)排列順序列出版本歷史、比較版本間的差異,并且可以歸并并行開發(fā)的版本。
當(dāng)開始對(duì)于一個(gè)指定的文件進(jìn)行工作時(shí),該文件具有只讀屬性──這意味著它不能被編輯或刪除。而檢出操作可以對(duì)該文件的最近版本形成一個(gè)可編輯的拷貝。它無(wú)須將文件拷貝到另一區(qū)域工作。檢出的注釋可以被提供。當(dāng)編輯完成后,該文件被檢入,于是在版本樹中形成一個(gè)新的版本并且將可編輯的拷貝刪除。為了檢驗(yàn)文件的變化,在檢入過(guò)程中可以填入注釋信息。文件一旦被檢入,即刻回復(fù)到只讀狀態(tài)成為共享數(shù)據(jù),可被所有成員使用。
ClearCase支持兩種檢出,保留以及非保留。保留檢出可以保證版本歷史形成的正確范圍,并且同時(shí)只允許一個(gè)人做保留檢出的操作。非保留檢出無(wú)須保證建立一個(gè)成功的版本,如果多個(gè)用戶同時(shí)對(duì)同一元素執(zhí)行非保留檢出,也企圖進(jìn)行檢入操作,那么第一個(gè)檢入操作被允許,而其他用戶必須通過(guò)歸并操作合并它們的結(jié)果。
豐富的注釋信息和版本數(shù)據(jù)的報(bào)表
ClearCase存儲(chǔ)了和文件系統(tǒng)對(duì)象相關(guān)又截然不同的信息類。這些信息實(shí)際上并不包含在對(duì)象中,它是一些額外數(shù)據(jù)。這些數(shù)據(jù)可以由ClearCase產(chǎn)生,也可以由用戶自己定義。在VOB數(shù)據(jù)庫(kù)中存儲(chǔ)了所有的數(shù)據(jù)。
ClearCase產(chǎn)生的這種數(shù)據(jù)信息提供了可靠的、面向文件系統(tǒng)的版本注釋信息。比如:這些數(shù)據(jù)可以驗(yàn)證在某一時(shí)刻,元素A建立了一個(gè)新的版本。用戶定義的數(shù)據(jù)可以用來(lái)表達(dá)額外的功能──比如:該文件的版本曾被用于構(gòu)造應(yīng)用系統(tǒng)的4.31版。
ClearCase的操作(如:檢出、檢入、和版本歸并)可以建立時(shí)間記錄,記錄數(shù)據(jù)包含這些操作信息。這些記錄被存儲(chǔ)在VOB數(shù)據(jù)庫(kù)中,主要描述了該操作的屬性"誰(shuí)做的、做什么、什么時(shí)候、在哪個(gè)地方及為什么",比如:敲入命令的人員的ID號(hào),操作的種類,操作的時(shí)間,主機(jī)名稱及用戶填入的描述??梢酝ㄟ^(guò)"lshistory"的命令顯示存儲(chǔ)在VOB中的事件記錄,并且可以通過(guò)歷史信息瀏覽器提供的圖形接口觀察VOB中的事件記錄。
用戶可以針對(duì)多種目的定義數(shù)據(jù),包含分支的名稱、版本標(biāo)簽、元素任一版本的注釋信息。
ClearCase數(shù)據(jù)的另一種應(yīng)用是形成注釋的文本文件。注釋命令可以通過(guò)行顯示的形式列出任何一個(gè)版本文本文件的內(nèi)容,這使得我們可以更容易的看到什么時(shí)候在不同的地方做了添加或刪除的操作。
ClearCase也可以針對(duì)文件系統(tǒng)對(duì)象建立客戶報(bào)表。而報(bào)表的種類可以由用戶自己定制輸出格式。
通過(guò)分支功能支持并行開發(fā)
ClearCase支持并行(同時(shí))開發(fā),每一個(gè)元素都可以沿著不同的分枝同時(shí)發(fā)展,即新的版本加到獨(dú)立的分支上。ClearCase可以很容易的產(chǎn)生分支,也可以很容易的將不同分支進(jìn)行合并。這樣一來(lái),即便某一部分的工作被凍結(jié)或加鎖,開發(fā)者仍然可以繼續(xù)自己的工作(如:在軟件集成期)。在這種情況,開發(fā)者可以在分支上工作,我們知道, ClearCase的自動(dòng)化操作和圖形歸并工具可以讓我們很容易的重新集成新的工作。
并行開發(fā)是非常重要的,因?yàn)椋?BR> (1)它允許不同的項(xiàng)目在同一時(shí)間使用同一資源樹。
(2)它將目前不可和其他人員共享的修改成果進(jìn)行隔離。
(3)它將絕對(duì)不可和其他人員共享的修改成果進(jìn)行隔離(如:已發(fā)布版本中的錯(cuò)誤修復(fù))。
(4)它使得在軟件集成期間開發(fā)工作無(wú)需停止,程序員可以先在分枝上開發(fā),以后再集成。
為了支持并行開發(fā),ClearCase允許進(jìn)行分支建立,追蹤分支的使用,文件比較,自動(dòng)歸并功能。
自動(dòng)的比較和版本間的歸并
并行開發(fā)的特點(diǎn)是對(duì)同一元素的不同版本進(jìn)行定期比較,也需要對(duì)版本間內(nèi)容進(jìn)行歸并。在ClearCase中,對(duì)于元素或文本文件進(jìn)行比較和歸并的操作有兩種:基于字符型和圖形界面型。其中,diff命令執(zhí)行多文件比較,不執(zhí)行歸并。而歸并命令可以處理32個(gè)"成員",并把它們生成一個(gè)獨(dú)立的文件。 ClearCase可以自動(dòng)辨認(rèn)歸并選項(xiàng)并實(shí)現(xiàn)歸并。ClearCase也可以對(duì)需要?dú)w并的項(xiàng)目元素進(jìn)行定位。如果所有的"成員"(歸并元素)是同一元素的版本,系統(tǒng)會(huì)自動(dòng)確定基礎(chǔ)"成員",通常是最低版本。此外,ClearCase會(huì)記錄基礎(chǔ)版本和某一歸并元素版本間的差異。如果,所有的"成員"間差異互不相同,ClearCase會(huì)自動(dòng)建立歸并版本。如果兩個(gè)或多個(gè)歸并"成員"文件內(nèi)容部分不同,歸并功能會(huì)提示開發(fā)者選擇歸并內(nèi)容。ClearCase也可以實(shí)現(xiàn)反向歸并――從主分支向子分支歸并。
ClearCase的加歸并功能可以在歸并其它分支時(shí)選擇指定的版本(那些在分支上自始至終進(jìn)行變化的版本)。負(fù)歸并操作可以刪除部分版本差異,從而形成一個(gè)新的版本,該版本除了那些被刪除的變更外包含所有的改變。