如何在某些流中列出ClearCase活动?

时间:2014-03-21 15:38:13

标签: clearcase clearcase-ucm

我想知道是否有办法在一个命令行调用中指定哪些流来获取活动列表?

现在,我正在使用以下任一方式构建基于vob或单个流的活动列表:

ct lsact -invob vob_name

ct lsact -in stream:stream_name

但是,现在我尝试过滤它以从锁定/过时项目中的流中删除活动。我已经获得了已解锁项目的流列表,但我不知道如何将其传递给" cleartool lsact"。

运行" ct lsact -invob",然后过滤输出需要太长时间(从cleartool获取输出超过30秒),所以我希望有一些方法可以将流传入ct lsact或ct describe命令或其他东西,在命令中而不是在命令中进行过滤。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

似乎你似乎永远无法让ClearCase以你想要的形式告诉你你想知道什么?

另一种方法是使用-fmt选项

ct lsact -fmt "%[stream]Xp %n\n" -inv /vobs/my_pvob

然后,您可以通过grep(-v)或其他过滤工具来排除/获取感兴趣的项目。 由于无法仅为活动流列出活动,因此在锁定项目/流时也可以锁定您的活动,然后排除过时的活动(使用-obsolete列出所有活动)。 / p>

或者,在VonC建议的基础上,处理活动流(无切换) - 无需存储列表(unix):

for stream in $(ct lsstream "%Xn" -inv /vobs/my_pvob); do
   echo ::: ${stream}
   ct lsact -in ${stream}
done

答案 1 :(得分:0)

如果您正在讨论bash脚本,则可以轻松地将流列表存储在变量中:

s=$(ct lsstream -s -invob /vobs/aPVob)

然后您可以iterate on each line within $s

while read -r line; do
    echo "... $line ..."
done <<< "$list"

在DOS脚本中,我建议先将这些流写入文件,然后process each line

cleartool lsstream -s -invob /vobs/aPVob > %TMP%\s.txt

for /F "tokens=*" %%A in (myfile.txt) do (
  cleartool lsact in stream:%%A@\aPVob
)