版本控制工具學習 http://www.itpxpj.com/course.do?method=getAllCourseInFront&classTypeId=21
1.【ClearCase】config.spec例子 http://www.itpxpj.com/course.do?method=getCourseInFront&classTypeId=21&courseId=104
element * CHECKEDOUT
element * /main/dev_branch/LATEST
element * /main/LATEST -mkbranch dev_branch
element * /main/LATEST
對應的解釋:
第一句,找被Checkout 的版本;
第二句,找main 主干下的dev_branch 分支上的最新版本;
第三句,找主干上的最新版本;如果元素被Check Out 的話,會觸發在元素的最新版本上創建
dev_branch。因為創建元素的分支是對元素的修改,必須要被做Check Out 的時才會觸發。然后會
重新對該元素解釋運行Config Spec 的內容。此時視圖將選擇/main/dev_branch 分支上的被Check
Out 的版本。如果該分支上被Check Out 的元素版本被Check In 的話,視圖將選擇/main/dev_branch
分支上的最新版本,也就是第二句規則的運用結果。(順便提醒一下,dev_branch 的分支類型應該被事先創建)。
2. ClearCase】工作中常用命令(上) http://www.itpxpj.com/course.do?method=getCourseInFront&classTypeId=21&courseId=110
VOB
查看當前VOB的基本信息和UUID
ct des -l vob: .
創建一個vob在/usr/vobstore/下,並打上“/vobs/project3”的tag.
mkvob -tag /vobs/project3 -c "main development sources" /usr/vobstore/project3.vbs
view
創建和刪除view
創建view:
$ cleartool mkview -tag MY_VIEW /../ MY_VIEW.vws
設置當前視圖
$ cleartool setview MY_VIEW
刪除view
$ cleartool rmview -tag <view_name>
查看view名字為“XXX”的所有view
$ cleartool lsview | grep XXX
各類type
lstype, rmtype 可以查看、刪除 各類type(包含lable/branch/triger等)
$ ct man rmtype
type-kind One of
attype Attribute type
brtype Branch type
eltype Element type
hltype Hyperlink type
lbtype Label type
trtype Trigger type
Label
創建類型
$cleartool mklbtype -nc label-name (盡量大寫)
添加
單個文件
$ct mklabel label-name path
$ct mklabel -replace label-name
把當前目錄下的所有文件的最新版本上打標簽:
$ct mklabel -recurse -rep label-name -ver /main/LATEST .
給所有打上TEST_LABEL標簽的文件打上TEST_LABEL2標簽
cleartool mklabel -replace -version /main/TEST_LABEL TEST_LABEL2 *
查找當前目錄下版本為/main/LATEST的,並且/main/LATEST上沒有LABEL_1標簽的文件,並且創建人是tom的文件,打上LABEL_1標簽
ct find . -version "{version(/main/LATEST) && ! lbtype(LABEL_1) && created_by(tom)}" -follow -print | xargs cleartool mklabel -rep LABEL_1
移動
$ct mklabel -rep -nc label-name 2.log
刪除
$cleartool rmlabel label-name 2.log
查看
查看某個element版本的具體有哪些標簽
ct desc xbean.xml@@/main/3
//查找當前目錄下打上CDU標簽的所有文件
cleartool find . -version "lbtype(CDU)" –print
(find 是遞歸查找)
//如果子目錄有link的文件或者文件夾也需要查找,需要加一個參數:-follow
cleartool find . -version "lbtype(CDU)" -print -follow
//按照邏輯表達式查找
ct find –version 'version(\main\LATEST) && ! lbtype(REL3)' –exec 'cleartool mklabel –replace REL3 %CLEARCASE_XPN%'
//查找打上TEST_LABEL和TEST_LABEL2標簽的文件
cleartool find . -element 'lbtype_sub(TEST_LABEL) && lbtype_sub(TEST_LABEL2)' -print
Branch
創建分支
mkbrtype -c "comment" branchname
從某個文件的最新版本建立分支
當config.spec初始為:
element * CHECKEDOUT
element * /main/LATEST
執行:
$ ct mkbrtype -c "comment" branch_test
Created branch type "branch_test".
$ct mkbranch -nc branch_test 2.log
再修改config.spec為:
element * CHECKEDOUT
element * .../branch_test/LATEST (取branch_test 這個branch的最新版本)
element * /main/LATEST
以后再co 2.log文件,就都是在branch_test上操作了
從某個文件的某個版本建立分支
分支名為:bugfix
$ ct mkbrtype -c "comment" bugfix
$ ct mkbranch -nc bugfix hello.c@@/main/3
Created branch "bugfix" from "hello.c" version "/main/3".
Checked out "hello.c" from version "/main/bugfix/0".
刪除branch
刪除當前目錄的branch (main/sp_main)
ct rmbranch .@@/main/sp_main
3.【ClearCase】工作中常用命令(下) http://www.itpxpj.com/course.do?method=getCourseInFront&courseId=111
version
1. 查看element的版本樹
lsvtree: Lists version tree of an element
cleartool lsvt preferences.jsp
2. 刪除version
刪除version: rmver (Removes a version from the version tree of an element)
刪除后,該element的后續版本才不會看見,但是前面版本都可以看見;
要徹底從vob刪除,就需要管理員權限,此方法不推薦
$ ct lsvt .
.@@/main
.@@/main/1
.@@/main/7
$ ct rmver .@@/main/7
Removing these versions of ".":
/main/7
Remove versions? [no] yes
Removed versions of ".".
$ ct lsvt .
.@@/main
.@@/main/1
.@@/main/6
$ ct ci -nc .
checked in "." version "/main/8".
所以,刪除一個文件的多個version后,下次version還是依原來刪除前的version進行
3. 查看element操作歷史
$ ct lshistory preferences.jsp
4. 比較不同version的文件
$ ct diff 1.html@@/main/8 1.html@@/main/9
checkin
- 進行checkin
Checkin單個文件
$ct ci -nc xxx.jsp (-nc就是無注釋)
Checkin當前view下的當前目錄下的所有文件(遞歸)
$ ct lsco -cview -r -s |xargs cleartool ci –nc
查看自己CO了多少文件
ct lsco -cview -avobs
if you want check in all the elements listed in one command, run
ct lsco -cview -avobs | awk -F "\"" "{print \$2}"| xargs -n1 cleartool ci -nc
- 創建提交新文件
1. 單個新文件
make目錄:cleartool mkdir -c comment newdirectory
make文件:cleartool mkelem -c comment newfilename
make文件:
create a new file:先co父目錄,再處理下面的文件(比如添加、刪除),和linux目錄權限管理一樣的原理,添加、刪除了父目錄的子文件相當於修改了父目錄的內容
$ ct co .
$ cp xxx.sh .
$ ct mkelem -nc xxx.sh
$ cd ../
$ ct lsco -cview -r -s
$ ct lsco -cview -r -s | xargs cleartool ci -nc
$ ls
或者使用:
$ct mkelem -nc -master -mkpath xxx.sh
$ct ci
2. 單個或者多個新文件(遞歸)
遞歸checkin當前目錄下的所有新加的文件
首先,千萬不要co父目錄
$cleartool lsprivate . | xargs cleartool mkelem -nc -master -mkpath
$cleartool lsco -r -s | xargs cleartool ci –nc
cleartool lsco -s | xargs cleartool ci –nc
3. checkin多個文件(遞歸)
Check in 當前目錄
Cleartool checkin .
Check in 當前目錄下所有文件.
Cleartool Checkin –nc *.*
Check in當前目錄下所有的文件和目錄中的文件
cleartool find . $file -exec ‘cleartool checkin -nc –ide $CLEARCASE_PN’
checkout
- 查看checkout
* 查看當前目錄下co的文件.
非遞歸:$ ct lscheckout
遞歸: $ct lscheckout –r
* 查看所有人的所有co文件
ct lscheckout -avobs
* 查看我的所有co文件
ct lscheckout -avobs -me
* 查看我的當前view的所有的co文件
cleartool lscheckout -cview -me -avobs
* 查看我的當前view的當前目錄下及以下(遞歸)的co文件
$ ct lsco -cview -r
$ ct lsco -cview -r -s (-s = -short: short顯示)
- 進行checkout
$ct co -nc xxx.jsp (-nc就是無注釋的方式co)
Check out當前目錄下所有文件
Cleartool Checkout –nc *.*
Check out當前目錄下所有的文件和目錄中的文件
cleartool find . $file -exec ‘cleartool checkout -nc $CLEARCASE_PN’
- 撤銷checkout
$ct unco -keep filename
(默認會keep,保留本地自己的文件,會copy一份並另外取個.keep名字)
$ct unco -rm filename
(刪除本地自己的文件)
撤銷當前目錄下所有co
$ct lsco -cview -r -s | xargs cleartool unco -rm
刪除文件
刪除clearcase一個目錄下的文件:
$ ct co .
$ ct rm 1.log (注:不用checkout 1.log文件; 必須使用ct rm,如果不加ct的rm,只是刪除了你的view的本地文件,沒有對CC的服務器產生影響)
$ ll
total 0
$ ct ci -nc .
當錯誤刪除某個文件file1:
可以使用以下命令還原:
$ ct ln .@@/main/versionX/file1 file1