2012-08-10 86 views
1

我想創建一個Ant腳本,它將在ClearCase中創建一個標籤,然後將標籤應用到最新版本沒有標籤的最新版本的任何文件。Ant腳本將Clearcase標籤添加到沒有標籤的元素

我使用它來創建標籤:

<ccmklbtype typename="${label.name}" failonerr="false" 
ordinary="true" comment="${label.comment}"/> 

當我使用它來添加標籤:

<ccmklabel viewpath="${view.path}" comment="${label.comment}" recurse="true" 
typename="${label.name}" replace="false" version="\main\${side.branch}\LATEST"/> 

當然,加入標籤,一切都在視圖路徑。我希望的行爲是隻添加標籤,如果該項目在最新版本上沒有標籤。

我可以通過命令提示符進行所需的操作,但我試圖查看它是否可以通過Ant完成。

有沒有人有任何想法?

看起來好像沒有辦法只標記那些還沒有名稱的東西。相反,我將其設置爲使用ANT一個可執行程序塊,如果它不與以前使用的其中一個標籤已經標註,將標註什麼:

<target name="add_labels" description="Look for LATEST code that does not have a previous version label already on it. Skip the 0 generation as that is brought in from a previous release."> 
<exec executable="cleartool" dir="${view.path}"> 
<arg value="find" /> 
<arg value="." /> 
<arg value="-ver" /> 
<arg value="version(\main\${side.branch}\LATEST)&amp;&amp;!version(\main\${side.branch}\0)${history.check}" /> 
<arg value="-exec" /> 
<arg value="cleartool mklabel -replace ${label.name} %CLEARCASE_XPN%" /> 
</exec> 
</target> 

似乎在測試工作。

+0

爲什麼不使用'取代= TRUE'?那將會把所有的元素放在一起,不論是否帶有標籤,並把它放在最新版本上。你用什麼命令行('cleartool')來實現你想要的? – VonC 2012-08-10 20:15:09

回答

2

望着man page of ccmklabel,你看:

replace bool
如果true,允許更換同一個分支相同類型的標籤。
默認爲false

因此,與replace=true,如果文件還沒有對最新版本的標籤,它會被放在(或移到)說LATEST版本。


OP ruminator的情況下,他只是想添加一個標籤,如果該版本沒有一個了。

2的方法是可行的:

  • 在已經選擇只有你想標記版本視圖ccmklabel
    很難做到,因爲只有version selector可用的配置規範是\main\${side.branch}\'{!lbtype(MY_TEST)},它可以選擇未標記爲「MY_TEST」(並且不完全適合初始選擇標準)的最後一個版本

  • 不要在ant腳本中使用ccmklabel,並直接調用cleartool find指令(這更精確,可以組合更多的版本選擇器,而不是視圖配置規範)。
    這正是OP ruminator說明他的問題更新:上有沒有合適的標籤LATEST版本

的查找查詢焦點:

<exec executable="cleartool" dir="${view.path}"> 
    <arg value="find" /> 
    <arg value="." /> 
    <arg value="-ver" /> 
    <arg value="version(\main\${side.branch}\LATEST)&amp;&amp;!version(\main\${side.branch}\0)${history.check}" /> 
    <arg value="-exec" /> 
    <arg value="cleartool mklabel -replace ${label.name} %CLEARCASE_XPN%" /> 
</exec> 
+0

我閱讀該手冊頁以指示舊標籤將被移至最新版本。我希望我沒有正確理解它。我迫不及待地想要測試(但直到週三纔會發佈)。謝謝。 – Ruminator 2012-08-11 02:34:12

+0

這沒有做我希望的。使用replace =「true」只是讓具有標籤的版本獲得新標籤(似乎是相同的行爲)。我只想添加一個標籤,如果版本還沒有。我們正在使用這些標籤來標識各個版本之間更改的配置項(因此,如果最新版本沒有配置,我們只需添加一個標籤)。 – Ruminator 2012-08-15 13:08:20

+0

@Ruminator然後構建您將調用您的'ccmklabel'的視圖,以便僅選擇要標記的元素:請參見http://publib.boulder.ibm.com/infocenter/cchelp/v7r0m0/index。 jsp?topic =/com.ibm.rational.clearcase.cc_ref.doc/topics/version_selector.htm,看看你是否可以想出一個只選擇你想要的版本的選擇器。使用該視圖來應用您的'ccmklabel'命令。 – VonC 2012-08-15 15:29:02