Dans ClearCase, Comment puis-je voir une ancienne version d'un fichier dans une vue statique, à partir de la ligne de commande?
dans une vue statique, Comment puis-je visualiser une ancienne version d'un fichier?
avec un fichier vide (appelé empty
dans cet exemple) je peux subvertir diff
pour me montrer l'ancienne version:
% cleartool diff -ser empty File@@/main/28
ça ressemble à un sale piratage. Ai-je manqué une commande plus basique? Est-il plus propre façon de le faire?
(Je ne veux pas éditer la spécification de configuration - c'est assez fastidieux, et j'essaie de regarder un tas de vieux version.)
Clarification : je veux envoyer la version du fichier à stdout, pour que je puisse l'utiliser avec le reste D'Unix (grep, sed, et ainsi de suite.) Si vous avez trouvé cette question parce que vous cherchez un moyen de sauvegarder une version d'un élément dans un fichier, voir réponse de Brian .
5 réponses
j'essaie de regarder un tas de vieilles versions
je ne suis pas sûr si vous devez parler de "un tas de vieilles versions" de un fichier , "un tas de vieilles versions" de plusieurs "1519290920 de fichiers".
pour visualiser plusieurs anciennes versions d'un fichier, le moyen le plus simple est d'afficher son arborescence de version ( ct lsvtree -graph File
), puis de sélectionner une version, clic droit sur elle et " Send To
' un éditeur qui accepte plusieurs fichiers (comme le bloc-notes++). En quelques clics vous aurez une vue de ces anciennes versions.
Remarque: vous devez avoir CC6.0 ou 7.0.1 IFix01 (7.0.0 et 7.0.1 ne parviennent pas à "envoyer à un fichier avec le message d'erreur suivant" Access to unnamed file was denied
")
mais pour visualiser plusieurs anciennes versions de différents fichiers, je recommande une vue dynamique et l'édition de la spécification de configuration de cette vue (et non la vue instantanée que vous êtes actuellement travailler avec), afin de sélectionner rapidement tous ces vieux fichiers (avec un peu de chance à travers une règle de sélection simple comme ' element * aLabel
')
[à Partir des commentaires:]
Quelle est la façon idiomatique de "cat" une révision antérieure d'un fichier?
la façon idiomatique est à travers un dynamique vue (que vous configurez avec la même configuration exacte que votre vue instantanée existante).
Vous pouvez ensuite parcourir (comme dans "change directory") les différents extended chemins d'un fichier.
Si vous voulez chats de toutes les versions d'une branche d'un fichier, vous allez dans:
cd /view/MyView/vobs/myVobs/myPath/myFile@@/main/[...]/maBranch
cat 1
cat 2
...
cat x
' 1
', ' 2
', ... ' x
' étant la version 1, 2, ... x de votre dossier au sein de cette branche.
pour un snapshot view , le extended path n'est pas accessible , donc votre "hack" est la voie à suivre.
Cependant 2 remarques ici:
- pour afficher rapidement toutes les révisions précédentes d'un fichier snapshot dans une branche donnée, vous pouvez taper:
(version sur une ligne pour copier-coller, syntaxe Unix:)
cleartool find addon.xml -ver 'brtype(aBranch) && !version(.../aBranch/LATEST) && ! version(.../aBranch/0)' -exec 'cleartool diff -ser empty "$CLEARCASE_XPN"'
(multi-ligne version pour lisibilité:)
cleartool find addon.xml -ver 'brtype(aBranch) && !version(.../aBranch/LATEST) && ! version(.../aBranch/0)' -exec 'cleartool diff -ser empty "$CLEARCASE_XPN"'
- vous pouvez rapidement avoir une sortie un peu plus agréable avec
(version sur une ligne pour copier-coller, syntaxe Unix:)
cleartool find addon.xml -ver 'brtype(aBranch) && !version(.../aBranch/LATEST) && ! version(.../aBranch/0)' -exec 'cleartool diff -ser empty "$CLEARCASE_XPN"' | ccperl -nle '$a=$_; $b = $a; $b =~ s/^>+\s(?:file\s+\d+:\s+)?//g;print $b if $a =~/^>/'
(multi-version en ligne pour plus de lisibilité:)
cleartool find addon.xml -ver 'brtype(aBranch) && !version(.../aBranch/LATEST) && ! version(.../aBranch/0)' -exec 'cleartool diff -ser empty "$CLEARCASE_XPN"' | ccperl -nle '$a=$_; $b = $a; $b =~ s/^>+\s(?:file\s+\d+:\s+)?//g; print $b if $a =~/^>/'
de Cette façon, la sortie est plus agréable.
Le " cleartool get
de la commande " (page de man) mentionnés ci-après par Brian ne pas faire de sortie standard:
la commande get ne copie que des éléments de fichier dans une vue.
sur un système UNIX ou Linux, copiez
/dev/hello_world/foo.c@@/main/2
dans le répertoire courant.
cmd-context get –to foo.c.temp /dev/hello_world/foo.c@@/main/2
sur un système de Windows, copiez
\dev\hello_world\foo.c@@\main
dans le répertoireC:\build
.
cmd-context get –to C:\build\foo.c.temp \dev\hello_world\foo.c@@\main
donc peut-être que, en raccordant le résultat à un cat
(ou type
dans windows), vous pouvez alors faire quelque chose avec la sortie de dit cat
( type
) commande.
cmd-context get –to C:\build\foo.c.temp \dev\hello_world\foo.c@@\main | type C:\build\foo.c.temp
je sais que c'est un vieux fil...mais je ne pouvais pas laisser cette bagarre passer sans solution....
les vues statiques ont une commande" ct get " qui fait exactement ce que vous recherchez.
cleartool get -to ~/foo File@@/main/28
sauvegardera cette version du fichier dans ~/foo
.
[réécrit sur la base du premier commentaire]
tous les fichiers de Clearcase, y compris les versions, sont disponibles dans la structure du répertoire virtuel. Je ne suis pas très familiarisé avec les vues statiques, mais je crois qu'elles passent encore par un SF virtuel; elles sont simplement mises à jour différemment.
dans ce cas, vous pouvez juste faire:
cat File@@/main/28
il peut devenir laid si vous devez également trouver la bonne version d'un répertoire qui contenait cet élément de fichier. Nous avons un script PERL à l'œuvre qui utilise cette approche pour analyser les changements historiques apportés aux fichiers, et nous avons rapidement manqué D'espace en ligne de commande sur Windows pour exécuter réellement les commandes!
si le fichier est un élément Clearcase, et cat File
fonctionne, et que la vue est positionnée correctement, alors essayez:
cat File@@/main/28
(note: sans le ct shell
-- vous ne devriez pas avoir besoin de cela si vous êtes déjà dans la vue.)
essayez de taper:
ct ls -l File
S'il affiche le fichier avec un nom étendu similaire au nom ci-dessus, alors vous devriez être en mesure de cat le fichier en utilisant un nom étendu.