ClearCase: Comment trouver des éléments qui n'ont PAS d'étiquette particulière
-
22-07-2019 - |
Question
Je recherche une commande ClearCase qui répertorie tous les éléments visibles dans ma vue actuelle, mais PAS une étiquette particulière leur est appliquée.
Par exemple, LABEL_X est appliqué à la plupart des éléments visibles dans mon affichage. Je veux une liste des éléments qui n'ont pas LABEL_X .
Je dois évidemment utiliser cleartool find
, mais la page de manuel d'utilisation et ClearCase me laisse perplexe quant à la manière de construire une requête comme celle-ci.
La solution
Cela devrait fonctionner:
ct find -all -ele '! lbtype_sub(LABEL_X)' -print
ct find -ele '! lbtype_sub(LABEL_X)' -print
Notes:
- ct signifie cleartool
- Syntaxe Unix ici (pour Windows, remplacez les guillemets simples par des guillemets doubles)
- méfiez-vous de l'espace entre
!
etlbtype_sub
(dans Winodws, vous n'avez pas besoin d'espace) -
-ele
très IMPORTANT pour obtenir une seule occurrence d'un fichier donné (et non toutes les versions d'un fichier correspondant à un critère)
-ele
limite la recherche aux éléments et non aux versions (cela déclencherait beaucoup plus résultats avec les versions concernées ...)
-all
liste tous les éléments inclus " supprimé " (c’est-à-dire "non référencées").
La deuxième ligne répertorie uniquement les éléments visibles (dans la vue actuelle)
Vous devez exécuter ces deuxièmes lignes de commande sur le sous-répertoire de votre choix dans un ClearCase donné (instantané ou vue dynamique): tous les fichiers de ce sous-répertoire (et sous-sous-répertoires ...) correspondant au cercle sélectionné être listé.
Avertissements:
-
Les
-
fichiers et les répertoires sont répertoriés. Si vous souhaitez uniquement des fichiers, ajoutez
-type f
à la requête:ct trouver le type f -ele '! lbtype_sub (LABEL_X)' -print
-
ce qui est affiché est le chemin étendu pour les éléments, c’est le nom du fichier suivi de
@@
.
Pour répertorier uniquement le nom sans @@
, utilisez ' -nxn
' (aucune option de nom de chemin étendu)
ct find -nxn -ele '!lbtype_sub(LABEL_X)' -print
Une autre façon plus complexe mais aussi plus complète de ne répertorier que le nom sans @@
consiste à utiliser descr -fmt
. Par exemple:
ct find . -ele "!lbtype_sub(LABEL_X)" -exec "cleartool descr -fmt \"%En %d\n\" \"%CLEARCASE_PN%\""
ct find . -ele '! lbtype_sub(LABEL_X)' -exec 'cleartool descr -fmt "%En %d\n" "$CLEARCASE_PN"'
vous donnerait (dans Windows ou la syntaxe unix) la date et le nom des fichiers et des répertoires non étiquetés LABEL_X.
Avec cet affichage ' descr -fmt
', vous pouvez combiner n'importe quel type d'information et de présentation que vous souhaitez pour le résultat.
Autres conseils
Ci-dessus fonctionne, mais n'oubliez pas de spécifier -cview pour obtenir JUSTE la vue actuelle, sinon vous obtiendrez également des fichiers de toutes les autres vues.
Je devais utiliser les éléments suivants sur mon installation Linux Clearcase:
cleartool find -cview -all -version '\!lbtype(LABEL_X)' -print
La syntaxe du message de VonC ne fonctionnait pas correctement avec l'option "!". ne pas être échappé.