hlovdal's answer illustre que, dans ce cas, vous devez trouver plus d'éléments que vous avez besoin, puis les filtrer (malgré tous les ClearCase find features).
Note:
cleartool find . -type f -element 'lbtype_sub(LBL_A)' -print
pourrait vous donner directement les éléments (et non la version qui ne peut être intéressant dans ce cas). Vous pouvez trouver la version avec -version
et une directive de format comme expliqué ci-dessous.
Avec l'aide de fmt_ccase, vous pouvez adapter la sortie pour obtenir précisément ce que votre script perl devra continuer:
cleartool find . -type f -element 'lbtype_sub(LBL_A)' -exec 'cleartool describe -fmt "%En %Cl\n" \"$CLEARCASE_XPN\"' | grep -v ","
-fmt "%En %l\n"
affichera le chemin complet du élément (au lieu de la version:/a/b/monFichier @@/main/myVersion) => /a/b/myFile'. the '
\ n` assurer un résultat par ligne.
-version
et -fmt "%n %l\n"
afficherait la version
\"$CLEARCASE_XPN\"
: les guillemets doubles arount le chemin étendu de la version d'un fichier vous garantira des espaces dans son nom sera toujours.
grep -v ","
: s'il y a une virgule, cela signifie « plus d'une étiquette »
%Cl
: éviter d'afficher la liste toutes d'étiquettes. En tout cas, s'il y en a plus d'un, ça ne vous intéresse pas!
Alors, pour trouver la version exacte :
cleartool find . -type f -version 'lbtype_sub(LBL_A)' -exec 'cleartool describe -fmt "%n %Cl\n" \"$CLEARCASE_XPN\"' | grep -v ","|awk '{sub(/ \(.*/,"");print}'
Note:
Les travaux ci-dessus avec la syntaxe unix. La syntaxe de Windows serait:
cleartool find . -type f -element "lbtype(LBL_A)" -exec "cleartool describe -fmt \"%n %Cl\n\" \"%CLEARCASE_XPN%\"" | grep -v "," | gawk "{gsub(/ \(.*,"");print}"
, qui répertorierait la version des fichiers avec une seule étiquette (correcte).
awk '{sub(/ \(.*/,"");print}'
transformera "[email protected]@/main/myVersion (LBL_A)
" en "myFile @@/main/myVersion"
juste mis à jour mes lignes de commande à afficher les versions au lieu de l'élément – VonC