As the title said:
I would like to find all elements that are on a branch (e.g. DEV_BRANCH
) with LATEST
version but that has not yet had any label
The simplest way would be to:
cleartool find . -type f -ele "version(.../myBranch/LATEST)" -print
cleartool find . -type f -ele "version(.../DEV_BRANCH/LATEST)" \ -exec "cleartool lsvtree \"%CLEARCASE_PN%\"" | findstr "DEV_BRANCH\\[0-9]* ("
You need a pattern in your find (or grep on Unix) in order to detect:
DEV_BRANCH
\
'(
' (meaning there are one or several labels)That will give you the list of all elements with any label on it.
Given that you can generate the list of any element with versions in the right branch, you then need to diff the two lists in order to extract all elements from the first list (versions in the right branch) but not in the second one (element with a label).
I don't know of a one-liner solution which would list right away the elements with no labels on them in a given branch...
Thanks VonC,
using your patter matching approach I realized that I could use describe instead of lsvtree to find the labes like below:
cleartool find . -type f -ele 'version(/main/DEV_BRANCH/LATEST)'
-exec 'cleartool describe -fmt "%n labels:%l\n" $CLEARCASE_PN' | grep labels:\w*$
This seems to do the trick for me. I just grep for all elements that yields a line where there is nothing after the "label:" string.
I think this does what I want. Hopefully I am not missing any files without lables...