【发布时间】:2015-06-08 12:00:17
【问题描述】:
我想用批处理文件检查 Clearcase 中是否已经存在某个元素,或者我是否仍需要添加它。
如何将其放入条件语句中?
喜欢:
if cleartool exists myFileName do myaction
else doOtherAction
【问题讨论】:
标签: clearcase
我想用批处理文件检查 Clearcase 中是否已经存在某个元素,或者我是否仍需要添加它。
如何将其放入条件语句中?
喜欢:
if cleartool exists myFileName do myaction
else doOtherAction
【问题讨论】:
标签: clearcase
您需要构建一个返回 true 或 false 的函数,具体取决于元素全名是否属于 ClearCase 视图元素。
然后,您可以从您的 if... else... 语句中调用该函数。
您的函数可以使用以下各种命令来确定文件是否为 ClearCase 元素(意味着已添加到源代码管理中):
您可以从使用cleartool ls -l 的结果开始:如果它的输出包括view-private object,它还没有添加到源代码管理中。
cmd-context ls -long
version Makefile@@\main\3 Rule: element * \main\LATEST
view private object bug.report
version cm_add.c@@\main\0 Rule: element * \main\LATEST
derived object (unshared) hello@@2007-03-24T11:32.418
version hello.h@@\main\CHECKEDOUT from \main\2
Rule: element * CHECKEDOUT
此处尚未添加“bug.report”。
在“About view-private objects”查看更多信息。
我已经为使用 C# 的上一个问题推荐了这种方法:“c# How to determine if a file is in ClearCase?”。
另一种方法是使用cleartool describe,如果描述的元素是私有元素,则会触发错误。
如technote "How to list view-private files in a view in Rational ClearCase" 中所述,命令cleartool lsprivate 仅适用于动态视图,不适用于快照视图。
对于快照视图,您可以使用:cleartool ls -r -view_only
另一种方法是使用cleartool find,如“Clearcase:如何检查一个元素在我从主干分支后创建的主干上是否有一个版本?”
【讨论】:
if else 语句中调用该函数。
cleartool ls -l myFile|grep private 是一个好的开始。这些命令不返回 true 或 false 并不重要:重要的是当元素在或不在源代码管理中时它们返回不同的东西,这允许您的函数在第一种情况下返回 true,在后者。
以下 DOS 批处理文件将向 ClearCase 添加一个文件,如果它还没有的话。适用于动态和快照视图。
@ECHO OFF
cleartool ls -l %1 | FIND "view private object"
IF %ERRORLEVEL% == 1 GOTO END
cleartool co -nc .
cleartool mkelem -nc -ci %1
cleartool ci -nc .
:END
您可能想要添加合适的 cmets 而不是使用 -nc 开关。
【讨论】: