How can I find all elements on a branch with version LATEST that has no label applied?

Micke P picture Micke P · Mar 4, 2011 · Viewed 10.2k times · Source

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 applied to them.

I know how to find elements that does not have a particular label applied (as in:

But I don't know how to find elements that hasn't got any label applied.

Thanks in advance Mikael

Answer

VonC picture VonC · Mar 4, 2011

The simplest way would be to:

  • find all element with a version in the right branch
cleartool find . -type f -ele "version(.../myBranch/LATEST)" -print
  • ask for a lsvtree and grep for an opening parenthesis (meaning there is at least one label)
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
  • a '\'
  • a version number
  • a space followed by a '(' (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...