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

后端 未结 2 1173
小蘑菇
小蘑菇 2020-12-18 12:53

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

相关标签:
2条回答
  • 2020-12-18 13:20

    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...

    0 讨论(0)
  • 2020-12-18 13:21

    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...

    0 讨论(0)
提交回复
热议问题