總結(jié):如何使用ClearCase進(jìn)行開發(fā)工作

總結(jié)Clearcase的開發(fā)使用

ClearCase就是一個軟件開發(fā)的版本控制系統(tǒng)崖面,不熟悉的人可以把它和git相類比唾糯,類似于windows和linux是兩個操作系統(tǒng)一樣柄驻。

ClearCase和Git就是兩個版本控制系統(tǒng)县习。它們都有類似的操作掘而,不過卻有不同的命令等迫悠,更細(xì)的話還能講到原理上的區(qū)別鹏漆,這里不作贅述。

本文內(nèi)容只包含:通過shell在服務(wù)器上來使用Clearcase進(jìn)行版本控制的基本操作


一艺玲、先搞懂2個概念:elements, version.

a. 在因?yàn)閏learcase是版本控制系統(tǒng)括蝠,可以很簡單地理解為,對元素進(jìn)行版本控制饭聚。

b. elements=元素,是數(shù)據(jù)庫中存儲的文件或者目錄忌警。

c. version=版本:每一個element(文件或目錄)都有多個版本(比如我們寫畢業(yè)論文的時候,會給每次更新的畢業(yè)論文取名為:畢業(yè)論文v1, 畢業(yè)論文v20等)秒梳。

d. 所有的文件法绵,在被check out之前,都是只讀的酪碘;

e. 建立分支branch和合并merge的操作是沒有次數(shù)限制的朋譬。

二、再明白4個名詞:vob兴垦,label 徙赢,branch,view

VOB:Versioned Object Base, 它是clearcase數(shù)據(jù)庫(存儲elements with versions)滑进,所有開發(fā)文件的所有版本都在這個庫里面犀忱。比如一個團(tuán)隊開發(fā)了一個軟件,這個軟件相關(guān)的所有開發(fā)文件都存在vob里扶关,如果軟件在不停迭代阴汇,那么在迭代過程中產(chǎn)生的所有文件也都存在vob里。

?一個公司一般會開發(fā)很多款產(chǎn)品节槐,這些產(chǎn)品的開發(fā)文件都在vob里搀庶。那么不同的產(chǎn)品團(tuán)隊為了開發(fā)自己產(chǎn)品,會在vob里對應(yīng)位置進(jìn)行開發(fā)铜异。比如團(tuán)隊A開發(fā)的產(chǎn)品是alpha,那他們的開發(fā)路徑在/vobs/alpha;團(tuán)隊B開發(fā)的產(chǎn)品是beta,那他們的開發(fā)路徑在/vobs/beta哥倔;以此類推。

https://img-blog.csdnimg.cn/20190416140551292.png

這里有一個版本控制樹揍庄。0咆蒿,1,2蚂子,3沃测,4,5表示的是 版本號食茎。

Label: 顧名思義蒂破,就是標(biāo)簽的意思。通過標(biāo)簽别渔,我們可以快速找到想要的文件或者目錄附迷。

每一個element可能擁有相同的標(biāo)簽惧互,但是,任何一個element的版本樹上的某個label名稱只有一個實(shí)例喇伯。比如下面的source.c這個元素喊儡,它的版本樹上,從0到5個版本都可以打標(biāo)簽艘刚,但是標(biāo)簽絕不能打一樣的管宵,不然你怎么找到對應(yīng)版本呢,是吧攀甚。那如果,現(xiàn)在有個元素source1.c岗喉,它也有個版本樹秋度,它的對應(yīng)版本的標(biāo)簽可以和source.c的一模一樣,也可以不一樣钱床。

https://img-blog.csdnimg.cn/20190416140551544.png

a. 一個元素的任何版本都可以有多個標(biāo)簽荚斯。還是用上面那個圖舉例子,source.c的版本1的標(biāo)簽是LINGLONG1_1.0,我們還可以給版本1再設(shè)置個標(biāo)簽如:LL1_1.0;

b. 根據(jù)傳統(tǒng)查牌,標(biāo)簽名應(yīng)該所有字母都大寫事期。

c. 給元素打標(biāo)簽的相關(guān)命令是:

? ? ? ?$cleartool mkbrtype -global -pbranch LABEL_TYPE@VOB_TAG

? ? ? ?$cleartool mklabel -recurse $LABEL_TYPE$ELEMENT //把標(biāo)簽LABEL_TYPE達(dá)到元素ELEMENT上

d. 列出標(biāo)簽:

? ? ? ? $cleartool lstype -kind lbtype

Branch: 分支。顧名思義就像是一棵樹的主干上長出了分支一樣纸颜。每個元素都有一個版本樹兽泣,對吧。那比如現(xiàn)在胁孙,我要對產(chǎn)品中的一個功能進(jìn)行改進(jìn)或者是要修復(fù)一個bug,假設(shè)這個功能代碼或者bug的位置在相關(guān)元素版本樹上的標(biāo)簽為T1_3.0的地方唠倦。那我們就從這個標(biāo)簽這里新建一個分支,表明我要對該元素某版本進(jìn)行改動啦涮较。分支名字就叫做T1_myName稠鼻,每個人都不能干擾別人的開發(fā)。

https://img-blog.csdnimg.cn/20190416140551755.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L05YSFlE,size_16,color_FFFFFF,t_70

a. 如上圖狂票,我從T1_1.0那里建了一個分支候齿,我在自己的分支上進(jìn)行開發(fā),開發(fā)的最新版本為2闺属。別人也在這里建了一個他的分支慌盯,不過這跟我不沖突。

b. 給你們看看真實(shí)開發(fā)過程中的復(fù)雜場景屋剑,哈哈哈哈

https://img-blog.csdnimg.cn/20190416140551811.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L05YSFlE,size_16,color_FFFFFF,t_70

view:?就是workspace. 通過view來選擇element(文件或目錄)的某個版本润匙。這樣的話每個開發(fā)者的工作就互不干擾啦。

a. view的一些常見操作:

? ? i) 進(jìn)入一個view:$cleartool setview VIEWNAME

? ? ii) 列出現(xiàn)有view:cleartool lsview

? ? iii) 列出目前進(jìn)入的view:$cleartool pwv

? ? iv) 退出一個view:$exit

? ? ?v) 新建view:$cleartool mkview -tag tmpA_view? /hosts/node-name/home/cleardata/viws/tmepA_view

b. 比如我現(xiàn)在沒有太多Clearcase下的開發(fā)經(jīng)驗(yàn)唉匾。我想建一個自己的workspace來練習(xí)一個操作孕讳。于是我就先去新建一個view by復(fù)制一個別人的view.具體操作如下:

? ? ? i) 別人的view的標(biāo)簽假設(shè)是alpha_project.1_tom匠楚;

? ? ? ii) 我先進(jìn)入到這個view:$cleartool setview alpha_project.1_tom;

? ? ? iii) 通過這個view來new一個自己的view厂财;

? ? ? iv) 再次用$cleartool setview myview來set工作view芋簿;

? ? ? v) new 一個branch, 在branch上check out 一個文件;

? ? ? ?vi) 對check out了的文件進(jìn)行修改璃饱;

? ? ? ?vii) 把這個文件check in 回自己的branch与斤;

? ? ? ?viii) 把這個文件merge到版本樹的主干上?;

三荚恶、Configuration Specitication

a. 每個view都有一個配置文件:它定義了選擇element版本的規(guī)則撩穿。

b. 每當(dāng)你新建一個view,就會自動生成一個default config spec(默認(rèn)配置文件)。

c. 這個默認(rèn)配置文件篩選的 文件或目錄是這樣的:

? ? ? i) 被check out了的谒撼;

? ? ? ii) 是版本樹主干上的最新版本食寡。

d. 要修改配置文件,命令是:$cleartool edcs??? (edcs 意思是edit config spec)

e. 查看配置文件的命令:$cleartool catcs? (catcs 意思是cat config spec)

我們已經(jīng)知道廓潜,要進(jìn)行自己的開發(fā)工作時抵皱,需要先建立一個自己的分支branch,然后在自己的branch上要修改一個element的時候辩蛋,必須先對這個element進(jìn)行check out操作呻畸。如果我們現(xiàn)在直接對一個element進(jìn)行check out,你猜會發(fā)生什么悼院?你在想伤为,咱們的branch都沒建呢,怎么能check out一個element呢樱蛤?沒錯钮呀,必須要在分支上才能對元素進(jìn)行check out,這種直接check out文件或目錄的操作昨凡,會觸發(fā)一個自動建立分支的級聯(lián)操作爽醋。

四肴捉、Check out

a. 對文件或目錄check out后朝蜘,我們才能對它們進(jìn)行修改。

b. 如果一個元素以及被check out 為“reserved”,那就不能再把它c(diǎn)heck out為“reserved”,只能把它c(diǎn)heck out為"unreserved".

c. 被check out為"unreserved"的文件跨琳,在“reserved”文件掛起的時候哪痰,是不能被check in的遂赠。

d. 如果想把“unreserved”文件check in, 那么必須先 解決“reserved”checkouts.

e. check out 一個ELEMENT的命令是: $Cleartool co -nc ELEMENT

五晌杰、Check in

a. check in 文件或者目錄會把新版本的元素添加到VOB中跷睦。

b. check in 一個ELEMENT的命令是 :$cleartool ci -nc ELEMENT

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? $cleartool unco ELEMENT

六、添加ELEMENT

a. 給版本控制庫中添加element的命令是:$cleartool mkelem ELEMENT(這個ELEMENT應(yīng)該事先存在肋演,且它的父目錄應(yīng)該已經(jīng)被check out了)

b. 新建目錄:$cleartool mkdir DIRECTORY(這個DIRECTORY不能已存在且它的父目錄應(yīng)該已經(jīng)被check out了)

c. 導(dǎo)入目錄:$clearfsimport -recurse -nsetevent SOURCE TARGET

d. 刪除元素:$cleartool rmelem ELEMENT

e. 查看所有nocheckout狀態(tài)的元素:$cleartool ls?

七抑诸、Merge合并(把修改后的元素merge到某個版本上)

a. 這個merge是用來合并被修改過的文件烂琴。

b. Merge 之前一定要先 review code,不僅自己,還有上級review, 直到上級review通過之后才能merge.

https://img-blog.csdnimg.cn/20190416140551555.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L05YSFlE,size_16,color_FFFFFF,t_70

c. merge相關(guān)的命令:

? ? ? ? ? ? ? ?$cleartool merge

? ? ? ? ? ? ? ?$cleartool diff

d. 列出可以merge的文件: $cleartool findmerge . -ftag VIEW_TAG -print

e. 列出可以merge的文件并自動merge: $cleartool findmerge . -ftag VIEW_TAG -nc -merge

八蜕乡、查詢cleartool的其他命令可以用

$cleartool man

$cleartool man COMMAND

---------------------

作者:panda愛學(xué)習(xí)

來源:CSDN

原文:https://blog.csdn.net/NXHYD/article/details/89332183

版權(quán)聲明:本文為博主原創(chuàng)文章奸绷,轉(zhuǎn)載請附上博文鏈接!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末层玲,一起剝皮案震驚了整個濱河市号醉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌辛块,老刑警劉巖畔派,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異润绵,居然都是意外死亡父虑,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進(jìn)店門授药,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人呜魄,你說我怎么就攤上這事悔叽。” “怎么了爵嗅?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵娇澎,是天一觀的道長。 經(jīng)常有香客問我睹晒,道長趟庄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任伪很,我火速辦了婚禮戚啥,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘锉试。我一直安慰自己猫十,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布呆盖。 她就那樣靜靜地躺著拖云,像睡著了一般。 火紅的嫁衣襯著肌膚如雪应又。 梳的紋絲不亂的頭發(fā)上宙项,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天,我揣著相機(jī)與錄音株扛,去河邊找鬼尤筐。 笑死汇荐,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的叔磷。 我是一名探鬼主播拢驾,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼改基!你這毒婦竟也來了繁疤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤秕狰,失蹤者是張志新(化名)和其女友劉穎稠腊,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鸣哀,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡架忌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了我衬。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片叹放。...
    茶點(diǎn)故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖挠羔,靈堂內(nèi)的尸體忽然破棺而出井仰,到底是詐尸還是另有隱情,我是刑警寧澤破加,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布俱恶,位于F島的核電站,受9級特大地震影響范舀,放射性物質(zhì)發(fā)生泄漏合是。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一锭环、第九天 我趴在偏房一處隱蔽的房頂上張望聪全。 院中可真熱鬧,春花似錦田藐、人聲如沸荔烧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鹤竭。三九已至,卻和暖如春景醇,著一層夾襖步出監(jiān)牢的瞬間臀稚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工三痰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留吧寺,地道東北人窜管。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像稚机,于是被迫代替她去往敵國和親幕帆。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5赖条? 答:HTML5是最新的HTML標(biāo)準(zhǔn)失乾。 注意:講述HT...
    kismetajun閱讀 27,474評論 1 45
  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當(dāng)在唯一索引所對應(yīng)的列上鍵入重復(fù)值時,會觸發(fā)此異常纬乍。 O...
    我想起個好名字閱讀 5,307評論 0 9
  • 之后的路 很有可能還會有幸福 但也許 再也不會真正地開心 真正地快樂了
    Zack要多喝熱水閱讀 135評論 0 0
  • 分頁器 使用方法: 簡單小案例: 視圖函數(shù)頁面 html頁面 HTML頁面講解: 上下頁: ===========...
    knot98閱讀 240評論 0 0