- 論壇徽章:
- 0
|
![]()
![]()
![]()
![]()
文檔選項(xiàng)
![]()
![]()
未顯示需要 JavaScript
的文檔選項(xiàng)
![]()
![]()
打印本頁
![]()
![]()
將此頁作為電子郵件發(fā)送
級別: 初級
慧波 商
, 軟件工程師, IBM
新麗 史
, 軟件工程師, IBM
2005 年 12 月 30 日
CearCase
Multitsite 產(chǎn)品的開發(fā)和實(shí)現(xiàn)增強(qiáng)了 ClearCase 產(chǎn)品的功能。使用 Multisite
使分布在各個(gè)國家,或者不同地點(diǎn)的開發(fā)者能夠?qū)ν粋(gè) VOB, 或是同一個(gè) VOB 里的 element 進(jìn)行處理。通過本文了解
CearCase Multitsite 的基本特性和功能。
CearCase
Multitsite 產(chǎn)品的開發(fā)和實(shí)現(xiàn)增強(qiáng)了 ClearCase 產(chǎn)品的功能。使用 Multisite
使分布在各個(gè)國家,或者不同地點(diǎn)的開發(fā)者能夠?qū)ν粋(gè) VOB, 或是同一個(gè) VOB 里的 element 進(jìn)行處理。事實(shí)上,Multisit
的機(jī)能就是要使每一個(gè)地點(diǎn) (site) 都擁有一個(gè)核心 VOB 在本地的復(fù)本,在任何時(shí)候,不同的地點(diǎn)都是在自己本地的 VOB
復(fù)本里面進(jìn)行操作。如何保證各個(gè)地點(diǎn)的 VOB
數(shù)據(jù)能夠同步呢?答案是通過相互傳送數(shù)據(jù)更新包來保持?jǐn)?shù)據(jù)的一致性。而這種更新操作是可以被設(shè)置為自動(dòng)完成,也可以使用命令手工完成。
ClearCase
Multisite 產(chǎn)品在什么情況下適用呢?ClearCase
Multisite的設(shè)計(jì)是為了協(xié)助跨地域進(jìn)行相對獨(dú)立卻又有聯(lián)系的大規(guī)模的開發(fā)測試項(xiàng)目。例如:一個(gè)開發(fā)的機(jī)構(gòu)他的組織非常的龐大,它的中心機(jī)構(gòu)設(shè)在美
國總部,但是它的開發(fā)及測試小組可能遍布于全世界各地。那么在這種情況下,如果想要集中他所有的開發(fā)和測試人員在美國開發(fā)項(xiàng)目就是非常不客觀的。這時(shí)就需
要引用ClearCase
Multisite這個(gè)產(chǎn)品來解決這個(gè)問題,也就是說,每個(gè)開發(fā)小組所在地都保留并維護(hù)著一個(gè)對處于美國總部的各個(gè)VOB的復(fù)本,各地的開發(fā)小組使用
ClearCase Multisite 來進(jìn)行產(chǎn)品的分布式開發(fā),從而解決了開發(fā)的跨地域性問題。
不僅僅如
此,Multisite
也可以引用在單一的一個(gè)地理位置,有三個(gè)基本作用,一個(gè)是可以實(shí)現(xiàn)獨(dú)立的開發(fā)小組共同使用統(tǒng)一的開發(fā)數(shù)據(jù);另一個(gè)用途是使VOB
可以在混合操作系統(tǒng)平臺的環(huán)境中工作;還有就是對核心VOB的備份等等。舉個(gè)例子,如果你想將開發(fā)工作從Unix平臺轉(zhuǎn)移到Windows平臺時(shí),你只需
在Windows平臺上建一個(gè)對Unix平臺上VOB的復(fù)本,而不是試圖在Windows上連接Unix平臺上的VOB,
畢竟在混合系統(tǒng)環(huán)境中做VOB的導(dǎo)入導(dǎo)出是相當(dāng)費(fèi)力的。
下面,本文將從幾個(gè)方面分別介紹ClearCase Multisite產(chǎn)品的一些概念、特性和基本的操作。
一、 VOB 和VOB 的復(fù)本 (VOB Replicas)
二、 實(shí)現(xiàn)獨(dú)立開發(fā)的重要機(jī)制:Mastership
三、 ClearCase Multisite的兩個(gè)基本操作:復(fù)制(create VOB replica)和同步(synchronize replica)
四、 UCM Deliver/Rebase 在Multisite操作中的應(yīng)用實(shí)例
一 VOB 和VOB 的復(fù)本 (VOB Replicas)
VOB(Versioned
Object
Base)是ClearCaes中最基礎(chǔ)的概念,也是使用頻率最高的術(shù)語之一。VOB提供了對于整體的目錄結(jié)構(gòu),包括文件夾,文件,和連接的永久存儲。
VOB中的文件,文件夾,以及連接的歷史版本都存儲在存儲池目錄的數(shù)據(jù)容器中。你可以把VOB看成是一個(gè)小型的數(shù)據(jù)庫,在這個(gè)數(shù)據(jù)庫中不但記錄了已經(jīng)被實(shí)
施了版本控制的文件系統(tǒng)對象的所有發(fā)展過程的數(shù)據(jù),例如版本信息,并且還記錄了相關(guān)的元數(shù)據(jù)(metadata),例如:版本標(biāo)簽(label),超級連
接(hyperlink),配置記錄等。
我們了解了VOB,再來看一下VOB的復(fù)本(VOB
Replicas)。為了實(shí)現(xiàn)ClearCase
Multisite,我們需要在不同的地點(diǎn)進(jìn)行VOB的復(fù)制。VOB的復(fù)本也像一個(gè)常規(guī)的VOB一樣,用戶可以在VOB復(fù)本內(nèi)進(jìn)行各種各樣的操作,例如
checkout, check in, edit,
實(shí)行軟件的編譯,可以創(chuàng)建元數(shù)據(jù)(metadata),并且可以將元數(shù)據(jù)附加到對象中(這句話可能比較難理解,舉個(gè)例子:我們創(chuàng)建一個(gè)label,
并且把label附屬到某一個(gè)元素上)。下面的圖里面例舉了一個(gè)Multisite的例子:歐洲的site將美國site的VOB進(jìn)行了復(fù)制,復(fù)制過來的
VOB replica里面的內(nèi)容和原來的VOB相同,但是在usa_branch上,歐洲site只有只讀的權(quán)限。
![]()
對于大多數(shù)開發(fā)用戶來說,他們不必知道VOB被復(fù)制了幾份,但是他們需要意識到開發(fā)是并行的。也就是說,他們在一個(gè)branch上的進(jìn)行了修改,其他的地點(diǎn)可能在另一個(gè)branch上也進(jìn)行了修改,這些修改最終是要協(xié)調(diào)合并到一起的。
![]()
![]()
![]()
![]()
回頁首
二 實(shí)現(xiàn)獨(dú)立開發(fā)的重要機(jī)制:Mastership
為
什么要引進(jìn)mastership的概念?由于各個(gè)地點(diǎn)使用自己創(chuàng)建的VOB
replica進(jìn)行獨(dú)立的開發(fā),那么就有可能出現(xiàn)修改上面的沖突,比如大家都需要修改某一個(gè)文件。為了避免這種沖突,ClearCase
Multisite支持mastership的機(jī)制,只有具有mastership的site,才可以修改,或者執(zhí)行其他操作,也就是說
mastership能夠?qū)崿F(xiàn)"修改權(quán)限互斥"的機(jī)制。
基本上所有的VOB object都有自己的宿主replica(master replica),下面以Branch這個(gè)object為例進(jìn)行詳細(xì)說明。
先
理解一下branch
類型和branch這兩個(gè)概念。branch類型,其實(shí)可以簡單的理解成branch的名字,branch其實(shí)是branch類型的一個(gè)實(shí)例
(instance)。如果你想建立一個(gè)名為usa_branch的branch,必須要先在VOB里面建立一個(gè)名字為usa_branch的
branch類型,當(dāng)你擁有了這個(gè)叫做usa_branch的類型之后,才可以建立叫做usa_branch的branch實(shí)例。再形象些
說,usa_branch是branch類型,acc.c@@/main/usa_branch和resource.h@@/main
/usa_branch就是兩個(gè)branch實(shí)例。
在VOB中定義的每一種branch類型都有自己的master replica,包括"main"這種branch的類型。我們可以通過下面的命令來看branch類型的master replica在哪個(gè)replica上。
multitool describe brtype:usa_branch@/vobs/dev
branch type " usa_branch "
created 16-Aug-00.18:12:23 by John Cole (jcole.user@goldengate)
" usa branch for work on dev project"
master replica: usa_hub@/vobs/dev
...
為什么要反復(fù)強(qiáng)調(diào)branch
類型的master replica的概念呢?因?yàn)樵谌笔〉那闆r下,branch實(shí)例只能在那些branch類型的master
replica上建立。就上面那個(gè)例子,我們看到usa_branch這個(gè)branch類型他的master replica是
usa_hub,那么usa_branch實(shí)例也只能在usa_hub這個(gè)replica中才能生成。Branch
生成好了,如何看branch實(shí)例的master replica是哪一個(gè)呢? 命令如下:
multitool describe test.txt@@/main/usa_branch
branch "test.txt@@/main/v2.0_port"
created 18-Aug-00.10:50:34 by John Cole (jcole.user@goldengate)
branch type: usa_branch
master replica: usa_hub@/vobs/dev (defaulted)
...
上面介紹了建立branch應(yīng)該具有的
mastership是什么(就是在具有branch類型的master
replica上建立)。那么當(dāng)我們生成了branch之后,對branch上面的元素(element), 如文件,文件夾,進(jìn)行checkout,
checkin的動(dòng)作,實(shí)施這些動(dòng)作需要什么樣的權(quán)限呢?那就是要對元素所在的branch有mastership。例如前面提到的text.txt的例
子,
multitool describe test.txt@@/main/usa_branch
branch "test.txt@@/main/usa_branch"
created 18-Aug-00.10:50:34 by John Cole (jcole.user@goldengate)
branch type: usa_branch
master replica: usa_hub@/vobs/dev (defaulted)
...
從上面的命令結(jié)果,可以得到這樣的結(jié)論:由于usa_branch的master replica是usa_hub,要想對text.txt實(shí)施reserved checkout,checkin, 只能在sua_hub這個(gè)replica上操作。
通
常所提倡的Multisite的開發(fā)模式,可以用圖示的例子說明:開發(fā)在兩個(gè)地點(diǎn)進(jìn)行,一個(gè)是main site,一個(gè)是USA
site,在各自的開發(fā)點(diǎn)上,開發(fā)是在不同的branch上面進(jìn)行的。Main
Site是在main的branch上進(jìn)行,它在main的branch上有mastership,而在usa_branch上面沒有
mastership,是只讀的。USA
site相反,它是在usa_branch上有mastership,而在main上面沒有mastership。所以兩個(gè)site的可以并行開發(fā)但是并
不互相干擾。
![]()
前
面的用了大量的篇幅描述了branch的mastership,那對于其他的VOB
object,他們的mastership又是怎么樣的呢?當(dāng)你在本地創(chuàng)建了一個(gè)VOB的replica之后,這個(gè)新建的replica缺省的就成為你在
這個(gè)新創(chuàng)建的replica中所創(chuàng)建的所有object的master replica。我們可以用describe命令去查看他們的master
replica是什么:
比如:
查看VOB復(fù)本的master replica:
cleartool describe replica:usa_hub@/vobs/dev
查看工程(project)的master replica:
cleartool describe project:proj_site1@/vobs/dev (/vobs/dev是ucm project vob的tag)
查看流(stream)的master replica:
cleartool describe stream:tester_proj_site1@/vobs/dev
新
創(chuàng)建的objects只能在它的master
replica來控制和管理,你可以修改,刪除這些object。當(dāng)然你也可以將object的mastership的權(quán)限轉(zhuǎn)移給其他的replica,
那么接收到mastership的replica也就成為了master replica.
![]()
![]()
![]()
![]()
回頁首
三ClearCase Multisite的兩個(gè)基本操作:復(fù)制和同步
(一)復(fù)制 (create VOB replica)
復(fù)制VOB需要進(jìn)行以下三個(gè)步驟:
1, 導(dǎo)出:在某一地點(diǎn)的主機(jī)上,輸入mkreplica -export命令,這個(gè)命令的執(zhí)行結(jié)果是生成一個(gè)新的VOB復(fù)本(replica)和裝有VOB復(fù)制信息的包。
2, 傳輸:將步驟1中生成的包發(fā)送到其它的地方的主機(jī)上。
3, 導(dǎo)入:在另一地點(diǎn)的主機(jī)上接收并倒入帶有VOB復(fù)制信息的包。
下面將對make replica的過程作以詳細(xì)的介紹。
復(fù)制VOB之前的準(zhǔn)備工作:
- 確保是否已經(jīng)獲得了ClearCase Multiste 產(chǎn)品的使用許可。使用mkreplica -export命令,只有ClearCase的使用許可是不夠的,還必需持有Multisite的使用許可。
- 在
進(jìn)行復(fù)制前,要在原始VOB上打上基線(如果你使用的ClearCase UCM)或者加上標(biāo)簽(apply
label)。這樣在新的VOB上工作的開發(fā)人員就可以在使用新VOB之前在這些基線(baseline)或者標(biāo)簽(label)的基礎(chǔ)之上創(chuàng)建分支
(branch),然后在這些分支上開始開發(fā)工作。 - 為原始VOB的replica 對象更改名字。即使這個(gè)VOB從來沒有被復(fù)制過,這個(gè)VOB的數(shù)據(jù)庫中也已經(jīng)存在一個(gè)replica 對象,叫做:original?梢允褂靡韵旅畈榭催@個(gè)replica對象:
> cleartool lsreplica -invob /vobs/dev
使用以下命令對original 改名:
> multitool rename replica:original main_hub (名稱改成main_hub) - 在對VOB進(jìn)行復(fù)制之前還要確保VOB并沒有被鎖住。用下面這個(gè)命令來查看VOB的狀態(tài):
> lslock vob:/vobs/dev
- 查
看VOB數(shù)據(jù)庫的大小。在mkreplica 的命令里有個(gè)參數(shù)是 -workdir,
這個(gè)參數(shù)是用來指定執(zhí)行這個(gè)命令時(shí)的工作目錄的。所以這個(gè)指定的工作目錄必須足夠大,足以容納這個(gè)VOB數(shù)據(jù)庫。因此在執(zhí)行mkreplica之前,得到
VOB數(shù)據(jù)庫的大小是非常必要的,有利于指定一個(gè)合適的工作目錄。而且執(zhí)行該命令的用戶還必須對這個(gè)工作目錄具有可寫的權(quán)限。察看VOB大小的命令:
> cleartool space /vobs/dev
導(dǎo)出階段:
- mkreplica -export 命令,例如:
這條命令的任務(wù)有兩個(gè),一是在另一個(gè)主機(jī)上新建一個(gè)復(fù)本VOB,另一個(gè)任務(wù)是把本地VOB的信息打包。例子用到的參數(shù) -fship是一種傳輸方式,在下面會提到。
> multitool mkreplica -export -workdir /tmp/ms_wkdir -fship AIX_HOST:usa_hub@/vobs/dev
- 備份原始的VOB。
我們這里所說的備份是經(jīng)過復(fù)制之后的VOB。如果你使用復(fù)制之前的VOB進(jìn)行恢復(fù),由于源VOB又被標(biāo)志成了非復(fù)制的狀態(tài),所以導(dǎo)致Multisite的 VOB復(fù)本恢復(fù)將失敗。 - (可選項(xiàng))驗(yàn)證與復(fù)制相關(guān)的變化。
下面的這些命令可以幫助你檢查目前你都做了哪些與復(fù)制相關(guān)的工作。mkreplica命令使得在數(shù)據(jù)庫中創(chuàng)建了一個(gè)新的VOB復(fù)本 對象,你可以直接把VOB復(fù)本對象理解為VOB對象。它的屬性可以用lsreplica命令顯示:
> multitool lsreplica -invob /vobs/dev
For VOB replica "/vobs/dev":
15-Aug.14:19 tester replica "main_hub"
16-Aug.09:49 tester replica "usa_hub"
lshistory 命令顯示了與復(fù)本對象相關(guān)的所有事件。
> cleartool lshistory replica:usa_hub@/vobs/dev
16-Aug.09:45 tester rename replica " usa_hub" "Changed name of replica from "original" to " usa_hub"."
15-Aug.14:19 tester make attribute "FeatureLevel" on replica usa_hub"
傳輸階段:
傳輸過程也就是將生成的復(fù)制包傳送到一個(gè)新的地點(diǎn),傳輸?shù)姆绞揭驗(yàn)樵?mkreplica -export里所使用的參數(shù)不同而不同:
- 如果使用的是-fship參數(shù),這個(gè)包將會立刻被傳送到另一個(gè)地點(diǎn)的主機(jī)上。
- 如果使用的是-ship參數(shù),就必須運(yùn)行shipping_server傳送包。
- 如果使用的是-tape 參數(shù),那需要使用磁帶或者其它介質(zhì)協(xié)助傳送包。
導(dǎo)入階段:
- 在準(zhǔn)備接收的主機(jī)上,可以用lspacket這個(gè)命令來查看所有接收到的包,例如,AIX_HOST是準(zhǔn)備接收包的主機(jī):
AIX_HOST> multitool lspacket
- 執(zhí)行mkreplica -import 命令
VOB 的replica 也是有權(quán)限控制的。mkreplica -import命令執(zhí)行完畢,執(zhí)行這個(gè)命令的用戶將會變成VOB replica 和這個(gè)VOB replica所有元素的owner。
同樣的,-workdir指定的工作目錄也必須足夠大,需要有至少1.6GB的可用空間。
必須具體指明輸入包的所在目錄。 - 刪除replica-creation 包,replica 更新包會自動(dòng)刪除。
(二)手工同步 (manual synchronize replica)
導(dǎo)出階段
使用syncreplica -export 命令和正確的參數(shù)生成更新包。如果你的機(jī)器處于網(wǎng)絡(luò)環(huán)境中,可以使用-fship參數(shù)直接將更新包傳輸?shù)搅硪慌_主機(jī)上。
例如:
> multitool syncreplica -export -workdir /tmp/ms_wkdir -fship aixmachine
傳輸階段
如果在syncreplica -export命令中使用了-fship參數(shù),更新包會直接被傳送到另一臺主機(jī)上;
如果在syncreplica -export命令中使用了-ship參數(shù),會以兩種方式調(diào)用shipping_server: shipping_server -poll and shipping_server shipping-order-pathname.
如果不是用-fship 或-ship 參數(shù),可以使用mail或其他的傳送方法來傳送包。
如果使用其它傳輸介質(zhì)進(jìn)行傳輸,直接將包拷到主機(jī)的相應(yīng)位置即可;
導(dǎo)入階段
使用lspacket命令確認(rèn)已經(jīng)接收到更新包。
使用syncreplica -import 命令,把更新包的內(nèi)容導(dǎo)入到VOB replica。例如:
> multitool syncreplica -import -receive
這里使用-receive 參數(shù),意思是接收在incoming shipping目錄下所有能夠找到的包;
> multitool syncreplica -import c:\msite\packet
這個(gè)例子指定了一個(gè)目錄作為參數(shù),syncreplica -import 命令會從c:\msite\packet 目錄下找所需要的更新包,然后把這些更新應(yīng)用到vob replica上。
![]()
![]()
![]()
![]()
回頁首
四UCM Deliver/Rebase 的應(yīng)用實(shí)例
場景介紹:
在這個(gè)例子里面,一個(gè)大型軟件公司的核心開發(fā)部門在北京,同時(shí)在上海也設(shè)立了開發(fā)部門,負(fù)責(zé)另一個(gè)模塊的開發(fā)工作,F(xiàn)在有兩臺開發(fā)用的主機(jī)Site1 和 Site2 分別位于北京和上海的軟件開發(fā)組。
公
司的策略是使用Rational ClearCase
Multisite產(chǎn)品來進(jìn)行軟件開發(fā)的版本控制。主要使用ClearCase的UCM,在Site1 上創(chuàng)建開發(fā)所使用的Project VOB 、
Component VOB和 Project,同時(shí),Project的Integration
View也是在Site1上生成的。Site2(上海)方面,需要?jiǎng)?chuàng)建Site1 上的Project VOB和 Componet
VOB的replica,然后join Project VOB上的Project,進(jìn)行軟件開發(fā)。最后將dev
stream上的成果deliver到Site1上的集成流上;同時(shí)也可以將Site1上集成流的更新rebase到本地的開發(fā)流上。這里,以Site1
是windows操作系統(tǒng),而Site2是Unix或Linux的操作系統(tǒng)為例,同時(shí)介紹如何利用Multisite來實(shí)現(xiàn)ClearCase的
interop操作(混合操作平臺)。
![]()
(一)在Site1上搭建UCM 的開發(fā)環(huán)境
- 在 Site 1 (Windows OS)上,使用圖形界面來創(chuàng)建Project VOB和
Componet vob,Click:
Start -> All Programs -> Rational Software -> Rational ClearCase -> Administration -> Create VOB,
Project VOB:Win_PVOB 和 Componet VOB:Win_CVOB 創(chuàng)建成功。 - 在ClearCase Project Explorer里創(chuàng)建Project及Join project
(二)在Site1上創(chuàng)建VOB replica
- 創(chuàng)建VOB replica的過程需要在視圖的環(huán)境里完成的,所以在執(zhí)行mkreplica命令創(chuàng)建VOB replica之前,需要新建一個(gè)視圖:myview。
- 在myview 視圖的環(huán)境下,進(jìn)入到Win_PVOB的目錄,將Win_PVOB的replica 名字從orginial 改成 win_pvob,用來唯一標(biāo)識Win_PVOB在Site1上的 replica 名字:
> multitool rename replica:original win _pvob
。
同樣地,更改Win_CVOB的replica的名稱:
> multitool rename replica:original win _cvob
. - 創(chuàng)建VOB replica:
創(chuàng)建Win_PVOB在Site2的replica:
> multitool mkreplica -export -workdir c:\temp\workdir -nc -fship :unix_ rpvob.
其中, -export 表示mkreplica所執(zhí)行的結(jié)果是要生成包含replica信息 的包,并按照相應(yīng)的參數(shù)將這個(gè)包傳輸?shù)较鄳?yīng)的主機(jī);
-workdir 參數(shù)所指明的是一個(gè)工作路徑。在mkreplica -export執(zhí)行的過程中,需要一個(gè)工作路徑來存放生成的臨時(shí)數(shù)據(jù),
workdir參數(shù)所指明的這個(gè)目錄就起到了存放臨時(shí)文件的作用。所以這個(gè)目錄需要足夠大,能夠容納整個(gè)VOB的內(nèi)容;
參數(shù)-fship表明,傳入包時(shí)需要使用shipping_server,并且這個(gè)包是在生成之后立刻被傳送到Site2的; 所指的是Site2的機(jī)器名,因此在執(zhí)行此命令之前,需要保證Site1可以通過訪問機(jī)器名來訪問到Site2;
這里的unix_rpvob
是你要在Site2上創(chuàng)建的Win_PVOB的replica的名字,你可以任意命名這個(gè)名字,不過還是建議您按照一定的規(guī)則來命名,
例如:名稱里包含site的信息,VOB的信息,用來標(biāo)識這個(gè)replica是在哪臺機(jī)器上的,是屬于哪個(gè)VOB的replica。
同樣的方法創(chuàng)建Win_CVOB在Site2的replica:
> multitool mkreplica -export -workdir c:\temp\workdir -nc -fship :unix_rcvob
(三) 在site2上導(dǎo)入VOB replica
- 查看在Site1上執(zhí)行完mkreplica -export后傳送到Site2的包。在Site2 ( Unix machine)上執(zhí)行:
>cd /usr/atria/shipping/ms_ship/incoming
>ls
這時(shí),在這個(gè)目錄下已經(jīng)存在了兩個(gè)文件,這就是從Site1上傳輸過來的包含有新建的replica信息的包;蛘邎(zhí)行multitool lspacket,也可以查到所傳入的信息包的位置。 - 導(dǎo)入包,在Site2上導(dǎo)入replica。
在Site2上創(chuàng)建Win_PVOB的replica VOB:
>
multitool mkreplica -nc -import -vre unix_rpvob -workdir
/var/tmp/workdir -tag /var/tmp/Unix_rPVOB -vob /var/tmp/ Unix_rPVOB.vbs
-npreserve
其中:import參數(shù)表示mkreplica命令要執(zhí)行導(dǎo)入replica
包的操作;-workdir后面的參數(shù)表示存放臨時(shí)數(shù)據(jù)的工作目錄,這個(gè)目錄需要具有足夠的空間;-tag
參數(shù)表示在Site2上要?jiǎng)?chuàng)建新的replica VOB的tag;-vob參數(shù)表示VOB
文件的存儲路徑;-npreserve參數(shù)表明采用不保持和export Site一致的用戶和權(quán)限創(chuàng)建replica VOB,
是指/usr/atria/shipping/ms_ship/incoming目錄下的文件名,根據(jù)VOB名稱選擇不同的packet
名。
同樣地,在Site2上創(chuàng)建Win_CVOB的replica VOB:
>
multitool mkreplica -nc -import -vre unix_rcvob -workdir
/var/tmp/workdir -tag /var/tmp/Unix_rCVOB -vob /var/tmp/Unix _rCVOB.vbs
-npreserve
- Site2上Mount已經(jīng)導(dǎo)入的replica VOB:
> cd /var/tmp
> mkdir Unix_rPVOB
> mkdir Unix_rCVOB
> cleartool mount /var/tmp/ Unix_rPVOB
> cleartool mount /var/tmp/ Unix_rCVOB
- 在Site2上執(zhí)行一些操作:
Join
Project;在開發(fā)視圖的環(huán)境下,在Unix_rCVOB根目錄下里創(chuàng)建一個(gè)文件,將文件加入源控制;將Site2上開發(fā)流上的變化deliver到
集成流上:在project explorer里,右鍵點(diǎn)擊Site2的開發(fā)流,選擇"deliver > to
Default"。由于集成流的mastership是Site1 上的replica,
所以,此時(shí)deliver的操作只是成功的把需要deliver的要素傳到Site1的replica上,如圖:
![]()
圖中所示是deliver成功后的結(jié)果,并且提示您如果想完成deliver的全部操作請到site1的replica上面執(zhí)行。在此之前,需要進(jìn)行site1和site2的同步操作,將Site2上的變化傳到Site1上。
(四)同步操作:
- 在Site2的命令行里,執(zhí)行以下步驟:
> cleartool mkview -tag non_ucm_view /var/tmp/non_ucm_view.vws
用來創(chuàng)建一個(gè)普通的視圖。(不是一個(gè)UCM的視圖)
> cleartool setview non_ucm_view
> cleartool mount /var/tmp/Unix_rPVOB
> cd /var/tmp/Unix_rPVOB (進(jìn)入到PVOB的根目錄)
> multitool syncreplica -export -fship win_pvob
這里,syncreplica 是同步命令;-export 表示同步后要輸出包;-fship表
示shipping_server立刻將包輸出到相應(yīng)的replica;win_pvob是這個(gè)Project VOB在Site1上replica的名稱。
同樣地,在non_ucm_view的環(huán)境下,
> cd /var/tmp/Unix_rCVOB
>multitool syncreplica -export -fship win_cvob
- 在Site1上接收同步包:
> multitool syncreplica -import -receive
- 在Site1上完成deliver操作:
在Project Explorer,選中Win_Pvob > project, 選擇 Tools > Find Posted
deliveries,在Find Posted Deliveries窗口上,選擇Site2的開發(fā)流,如
圖:
![]()
選擇"deliver",完成deliver操作,是site2上開發(fā)流的變化集成到project的集成流上。
![]()
delivery全部的操作成功完成后,會看到一個(gè)成功的提示,如圖:
![]()
(五) 在Site1上,將集成流上的變化rebase到Site1的開發(fā)流
rebase
Site1的集成流變化到Site1的開發(fā)流,使得Site1上也得到最新的資源。由于集成流和Site1的開發(fā)流的mastership都是Site1
的replica, 所以能夠在Site1上完成這個(gè)rebase操作,而無需同步到Site2上。完成rebase 需要兩個(gè)步驟:
- 在project explorer中,在集成流上新建一個(gè)baseline;從這個(gè)baseline上rebase到開發(fā)流。
- 選中開發(fā)流,右鍵,選擇rebase stream。到這為止,Site1和Site2上的開發(fā)流內(nèi)容完全一致(私有文件除外)。下面的圖示就是在site2的開發(fā)流上操作rebase from recommended baseline。
![]()
(六)將site1的集成流變化rebase 到site2的開發(fā)流
如果需要將Site1開發(fā)流上的變化同步到Site2的開發(fā)流上,例如在Site1的開發(fā)流環(huán)境中,在Win_CVOB里新建了一個(gè)文件,需要將這個(gè)文件同步到Site2的開發(fā)流上,需要經(jīng)歷以下步驟:
- 首先,需要將project的集成流的mastership改成Site2的replica:
在non_ucm_view 的環(huán)境中,進(jìn)入Win_PVOB的根目錄,執(zhí)行chmaster命令。
>multitool chmaster -stream unix_rpvob stream: Win_project_ Integra tion
Mastership was changed for all objects associated with stream "Win_Proj_Integrat
ion".
You must change mastership manually for the following branch types:
Win_Proj_Integration@\Win_CVOB
這里,chmaster命令的意思是要更改一個(gè)object的mastership;-stream表示要更改的object是流;unix_rpvob
是要改成的replica 名稱;stream
后面所帶的參數(shù)是流的名稱,這里為project的集成流。這個(gè)命令執(zhí)行完畢,會出現(xiàn)一個(gè)提示,提示您需要更改branch
type的mastership,并且給出了需要更改的branch
type的名稱,在這個(gè)例子中就是Win_Proj_Integration@\Win_CVOB。需要記錄下這個(gè)branch
type名,在下一步中,作為參數(shù)輸入。
- 同樣在non_ucm_view環(huán)境,進(jìn)入Win_CVOB的根目錄,執(zhí)行chmaster命令,更改branch type。
> multitool chmaster unix_rcvob brtype:
這里的brtype后接的參數(shù)需要輸入上一步中在提示信息里所記錄的
branch type名稱。
- 將更改mastership的結(jié)果同步到Site2上:
需要在non_ucm_view環(huán)境下,首先進(jìn)入到Win_PVOB根目錄,執(zhí)行:
> multitool syncreplica -export -fship unix_rpvob
進(jìn)入到Win_CVOB根目錄,執(zhí)行:
> multitool syncreplica -export -fship unix_rcvob
在Site2上,導(dǎo)入同步信息:
> multitool syncreplica -import -receive
- 在Site1上執(zhí)行deliver:
在上一步中已經(jīng)將集成流的mastership從Site1的replica改成Site2的replica,并且將更新同步到Site2之后,在這一步中開始在Site1上執(zhí)行deliver操作,如圖:
![]()
![]()
- 把Site1 的deliver更新同步到Site2上,這次不需要同步Win_CVOB了,以為Win_CVOB并沒有做改動(dòng),只是將Win_CVOB的前面的更改deliver到了Win_PVOB:
在non_ucm_view的環(huán)境下,進(jìn)入到Win_PVOB根目錄,執(zhí)行:
> multitool syncreplica -export -fship unix_rpvob
在Site2上接收同步包:
> multitool syncreplica -import -receive
- deliver執(zhí)行之后,只是將結(jié)果傳送到了Site2的replica上,需要繼續(xù)在Site2上執(zhí)行Find posted deliveries操作,從而最終完成deliver操作。
![]()
- 當(dāng)更新到達(dá)Site2的集成流后,可以通過rebase將更新傳到Site2的開發(fā)流中。這樣Site2的開發(fā)流和Site1的開發(fā)流就完全一致了。
![]()
![]()
![]()
![]()
回頁首
五 總結(jié)
本
文概括了ClearCase
Multisite所涉及的基本概念,包括VOB和VOB復(fù)本,Mastership,以及完成創(chuàng)建VOB復(fù)本和手動(dòng)同步更新的步驟。最后本文通過一個(gè)場
景實(shí)例詳細(xì)描述了如何用Multisite來實(shí)現(xiàn)一個(gè)分布式開發(fā)。希望對從事相關(guān)工作的技術(shù)人員有一定的幫助。
本文來自ChinaUnix博客,如果查看原文請點(diǎn):http://blog.chinaunix.net/u3/90363/showart_2122386.html |
|