2008-08-26 15 views
8

Il existe un référentiel CVS hérité, qui contient un grand nombre de répertoires, de sous-répertoires et de chemins. Il y a aussi un grand nombre de branches et d'étiquettes qui ne couvrent pas forcément tous les chemins, généralement un sous-ensemble. Comment puis-je savoir quelle branche/tag couvre quels fichiers et quels chemins? Le journal de CVS fournit déjà la liste des étiquettes par fichierComment savoir quelles balises CVS couvrent quels fichiers et chemins?

La tâche exige que je transpose ceci en fichiers par étiquette. Je ne pouvais pas trouver une telle fonctionnalité dans l'implémentation actuelle de WinCVS (CVSNT). Compte tenu des nombreux cycles vides, je peux écrire un script Perl qui ferait cela, l'algorithme n'est pas complexe, mais il doit être fait.

J'imagine qu'il y a des gens qui avaient besoin de telles informations et qui ont résolu ce problème. Ainsi, je pense que devrait être un outil facilement disponible (open source/gratuit) pour cela.

Répondre

7

Pour déterminer ce que les balises appliquent à une utilisation de fichier particulier:

cvs log <filename> 

Affichera toutes les versions du fichier et quelles balises ont été appliquées à la version.

Pour déterminer quels fichiers sont inclus dans une seule balise, la seule chose à laquelle je peux penser est de vérifier à l'aide de la balise et de voir quels fichiers reviennent. La commande pour cela est l'une des suivantes:

cvs update -r <tagname> 
cvs co <modulename> -r <tagname> 
cvs export <modulename> -r <tagname> 
0

Je ne connais aucun outil qui puisse vous aider, mais si vous écrivez le vôtre, je peux vous sauver d'une tête: Les répertoires dans CVS ne peuvent pas être tagget. Seuls les fichiers qui s'y trouvent ont des balises (et c'est ce qui détermine ce qui est extrait lorsque vous consultez un répertoire sur une balise spécifique).

2

Vous n'avez pas besoin de faire une extraction réelle. Vous pouvez utiliser l'option -n pour simuler seulement ceci:

cvs -n co -rTagName ModuleName 

Cela vous donnera les noms de tous les fichiers marqués TagName dans le module ModuleName.

+0

Impossible de faire fonctionner ceci. cvs retourné: il n'y a pas de version ici; lancez 'cvs checkout' en premier –

+0

@Joseph: Vous devez spécifier un CVSROOT via une variable d'environnement ou en utilisant l'argument '-d'.Sinon, CVS ne sait pas quel référentiel interroger. –

+0

Merci pour la réponse. Je n'étais pas certain d'avoir ajouté cela, mais j'ai essayé à nouveau avec le -d et un chemin vers un dépôt cvs et j'ai reçu le même message. Je cours la version 1.1.22 de cvs. Fait intéressant, cependant, si je donne un tag inexistant il me dit que le tag n'existe pas. –

1

La commande suivante donne la liste des fichiers qui se trouvent dans cette balise "yourTagName". Les fichiers sont tous marqués comme nouveaux, les informations de révision dans "yourTagName".

Cette commande effectue un diff entre le 2000-01-01 et votre balise, n'hésitez pas à utiliser une autre date antérieure.

cvs -q rdiff -s -D 2000-01-01 -r yourTagName 
11

Pour afficher la liste des balises sur un fichier, on peut aussi le faire:

cvs status -v <file> 
4

la méthode citée ci-dessus ne fonctionne pas pour moi

cvs -q rdiff -s -D 2000-01 -01 -r yourTagName

mais après beaucoup de déconner, je me suis rendu compte que

cvs -q rdiff -s -D 2000-01- 01 -r yourTagName ModuleName

fonctionne