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