2010-02-24 34 views
2

給定文件的標籤我知道這個TAKS一個尷尬的解決方案將是:如何找到所有在ClearCase中

  • 第一次使用ct ls獲取文件
  • 和管道的整個版本信息版本信息到解析腳本以實際獲取文件的標籤。

但我猜ClearCase應該有一個「內置」解決方案來完成這項任務,不需要任何外部腳本的支持。

如果您碰巧知道該任務的「內置」解決方案,請幫助我。
在此先感謝。

+0

@海源:剛剛完成我的答案列表*所有*文件的標籤。我恐怕沒有「內置」解決方案。 – VonC 2010-03-24 14:13:02

回答

5

fmt_ccase包含各種ClearCase元素的所有格式字符串。

對於一個版本的文件,您可以:

cleartool descr -fmt "%l\n" /path/to/a/version 

%l
標籤:對於版本中,所有貼有標籤;否則爲空字符串。
標籤以逗號分隔的列表形式輸出,用圓括號括起來。
A <SPACE>字符跟隨每個逗號。

變體

  • %Cl
    最大標籤:指定標籤的最大數目與最大場寬度參數(見Specifying field width)來顯示。
    如果有更多標籤,則將「...」附加到輸出。
    如果沒有指定最大場寬度,最大缺省值是3
  • %Nl
    沒有逗號:抑制標籤列表輸出括號和逗號;
    帶空格的單獨標籤

所以結果可能是:

Labels: (Rel3.1C, Rel3.1D, Rel3.1E) 
Labels without commas or parens: Rel3.1C Rel3.1D Rel3.1E 

在這兩種情況下,你仍然需要解析的結果,但至少輸出可以包含標籤,如:

Rel3.1C Rel3.1D Rel3.1E 

onaclov2000增加(從評論):

唯一的問題是,您正在抓取文件特定版本的標籤。
鑑於分支等可以存在,我們需要能夠獲得文件上的所有標籤。
如果您使用版本樹圖形並選擇工具 - >「定位」,您可以看到全部附加到該文件的標籤。
在cleartool中是否有一個共同的命令會返回「locate」或「contents」的結果?

lsvtree(圖形版本樹)確實顯示當前由圖中看到的元素的所有版本的標籤,當你點擊「標籤名稱」

話雖這麼說,似乎沒有要一個「內置」的解決方案和一些分析涉及:

例如(這是比OP短版位,但仍然基於一個cleartool ls):

ct ls -l [email protected]@|grep version|gawk "{gsub(/^version.*@@\\\\/,\"\",$0) ; gsub(/ \ [.*/,\"\",$0); print $0}" 

(的GnuWin32語法)

,或者只能用動態的觀點:

cd m:/myView/path/to/[email protected]@ 
# list all files, not directories: the files are the labels 
dir /B /A-D 
+0

唯一的問題是你抓取特定版本的文件上的標籤,考慮到分支等可以存在,我們需要能夠獲得文件上的所有標籤,如果你使用版本樹圖形和選擇工具 - >「定位」你可以看到所有的標籤附加到該文件,有一個共同的命令在cleartool將返回「定位」,或「內容」的結果? – onaclov2000 2010-03-24 13:26:59

+0

@ onaclov2000:不確定關於downvote,但我已擴展我的答案以解決「列出所有標籤」查詢。 – VonC 2010-03-24 14:10:57

+0

由於您的更新,我向您投票贊成!對不起,它不會早點來臨,我在谷歌搜索過程中再次遇到這個問題 – onaclov2000 2011-02-17 15:33:18

2

IBM的文章 「Additional examples of the cleartool find command」 是查找查詢的重要來源。
爲了擴大對VonChis answer提到的 「lsvtree」 一下,您有:

要找到任何標籤所有元素:

的Windows:

cleartool find . -type f -exec "cleartool lsvtree -a %CLEARCASE_PN%" | findstr 
"(" 
./[email protected]@/main/1 (LABEL100, LABEL99, LABEL98, LABEL97) 
./[email protected]@/main/BR1/1 (REL2) 
./[email protected]@/main/1 (REL1) 

UNIX/Linux的:

cleartool find . -type f -exec 'cleartool lsvtree -a $CLEARCASE_PN' | grep "(" 

./[email protected]@/main/1 (LABEL100, LABEL99, LABEL98, LABEL97) 
./[email protected]@/main/BR1/1 (REL2) 
./[email protected]@/main/1 (REL1) 

即發現只爲當前視圖中選定的版本標籤,但你可以重用lsvtree部分到grep帶標籤文件的所有版本。

+0

我冒昧地在您的初始鏈接上進行了擴展。 StackOverflow是一個問答網站,旨在儘可能多地在每個答案中包含儘可能多的信息,以便限制其對外部來源的依賴性(例如,此鏈接可能會在任何時候被更改/更改)。 +1 btw。 – VonC 2011-01-20 11:29:54

相關問題