问题
I'm wondering if there is a way to specify which streams to get a list of activitis for in one command line call?
Right now I'm building a list of activities based on either a vob or an individual stream, using either:
ct lsact -invob vob_name
or
ct lsact -in stream:stream_name
However, now I'm trying to filter it a little bit to remove activities from streams that are on locked/obsolete projects. I've got the list of streams that are on unlocked projects already, but I don't know of any way to pass this in to "cleartool lsact".
Running "ct lsact -invob", then filtering the output takes too long (upwards of 30 seconds to get output from cleartool), so I am hoping there is some way I can pass in the streams to a ct lsact or ct describe command, or something else, to do the filtering in the command instead of after.
Any ideas?
回答1:
Doesn't it always seem you can never quite get ClearCase to tell you what you want to know in the form you want?
An alternative may be to use the -fmt option
ct lsact -fmt "%[stream]Xp %n\n" -inv /vobs/my_pvob
You can then pipe through grep (-v) or other filter tool to exclude/get the projects of interest. Since it's not possible to list activities only for active streams, the alternative would be to also lock your activities when you lock the project/stream, then obsolete activities would be excluded (use -obsolete to list all activities).
Or, building on VonC suggestion, process the active streams (no -obs switch) - without the need to store the list (unix):
for stream in $(ct lsstream "%Xn" -inv /vobs/my_pvob); do
echo ::: ${stream}
ct lsact -in ${stream}
done
回答2:
If you are talking about bash script, you can easily store the list of streams in a variable:
s=$(ct lsstream -s -invob /vobs/aPVob)
You can then iterate on each line within $s:
while read -r line; do
echo "... $line ..."
done <<< "$list"
In a DOS script, I would recommend writing those streams to a file first, and then 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
)
来源:https://stackoverflow.com/questions/22563120/how-to-list-clearcase-activities-in-certain-streams