hlovdal's answer illustra che, in questo caso, è necessario trovare più elementi di quelli necessari e quindi filtrarli (nonostante tutto lo ClearCase find features).
Nota:
cleartool find . -type f -element 'lbtype_sub(LBL_A)' -print
potrebbe dare direttamente gli elementi (e non la versione che non può essere interessante in questo caso). È possibile trovare la versione con -version
e una direttiva di formato come spiegato di seguito.
Con l'aiuto di fmt_ccase, è possibile personalizzare l'output per ottenere precisamente ciò che il vostro script perl avrà bisogno di andare avanti:
cleartool find . -type f -element 'lbtype_sub(LBL_A)' -exec 'cleartool describe -fmt "%En %Cl\n" \"$CLEARCASE_XPN\"' | grep -v ","
-fmt "%En %l\n"
visualizzerà il percorso completo del elemento (invece della versione:/a/b/myFile @@/main/myVersion) => /a/b/myFile'. the '
\ n` assicurati un risultato per riga.
-version
e -fmt "%n %l\n"
sarebbe visualizzare la versione
\"$CLEARCASE_XPN\"
: i doppi apici arount il percorso esteso della versione trovato assicurare un file con spazi nel nome sarà ancora lavorare.
grep -v ","
: se c'è qualche virgola, che significa "più di un'etichetta"
%Cl
: evitare la visualizzazione della lista tutte di etichette. Ad ogni modo, se ce ne sono più di uno, non sei interessato!
Così, per trovare l'esatto versione:
cleartool find . -type f -version 'lbtype_sub(LBL_A)' -exec 'cleartool describe -fmt "%n %Cl\n" \"$CLEARCASE_XPN\"' | grep -v ","|awk '{sub(/ \(.*/,"");print}'
Nota:
I lavori di cui sopra con la sintassi Unix. La sintassi di Windows potrebbe essere:
cleartool find . -type f -element "lbtype(LBL_A)" -exec "cleartool describe -fmt \"%n %Cl\n\" \"%CLEARCASE_XPN%\"" | grep -v "," | gawk "{gsub(/ \(.*,"");print}"
, che elenca la versione dei file con una sola etichetta (corretta).
awk '{sub(/ \(.*/,"");print}'
trasformerà "[email protected]@/main/myVersion (LBL_A)
" in "myFile @@/main/myVersion"
appena aggiornato le mie righe di comando a mostra versioni invece dell'elemento – VonC