Come scoprire quali tag CVS coprono quali file e percorsi?
-
09-06-2019 - |
Domanda
Esiste un repository CVS legacy, che contiene un gran numero di directory, sottodirectory e percorsi.C'è anche un gran numero di rami e tag che non necessariamente coprono tutti i percorsi e i file, di solito un sottoinsieme.Come posso scoprire quale ramo/tag copre, quali file e percorsi?
Il registro CVS fornisce già l'elenco dei tag per file.L'attività richiede che io lo trasponga in file per tag.Non sono riuscito a trovare tale funzionalità nell'attuale implementazione di WinCVS (CVSNT).Dati ampi cicli vuoti posso scrivere uno script Perl che lo faccia, l'algoritmo non è complesso, ma deve essere fatto.
Immagino che ci siano alcune persone che avevano bisogno di tali informazioni e hanno risolto questo problema.Pertanto, penso che dovrebbe essere uno strumento facilmente disponibile (open source / gratuito) per questo.
Soluzione
Per determinare quali tag applicare a un particolare file utilizzare:
cvs log <filename>
Verranno restituite tutte le versioni del file e quali tag sono stati applicati alla versione.
Per determinare quali file sono inclusi in un singolo tag, l'unica cosa che mi viene in mente è controllare utilizzando il tag e vedere quali file ritornano.Il comando per questo è uno qualsiasi di:
cvs update -r <tagname>
cvs co <modulename> -r <tagname>
cvs export <modulename> -r <tagname>
Altri suggerimenti
Per elencare i tag su un file si può anche fare:
cvs status -v <file>
il metodo sopra citato non ha funzionato per me
cvs -q rdiff -s -D 2000-01-01 -r nomeTag
tuttavia dopo tanto casino me ne sono reso conto
cvs -q rdiff -s -D 2000-01-01 -r nomeTagNomeModulo
lavori
Non è necessario effettuare un vero e proprio checkout.Puoi usare l'opzione -n solo per simulare questo:
cvs -n co -rTagName ModuleName
Questo ti darà i nomi di tutti i file taggati TagName nel modulo ModuleName.
Il seguente comando fornisce un elenco di file presenti nel tag "yourTagName".I file sono tutti contrassegnati come nuovi, le informazioni sulla revisione in "yourTagName".
Questo comando fa una differenza tra il 01-01-2000 e il tuo tag, sentiti libero di utilizzare un'altra data precedente.
cvs -q rdiff -s -D 2000-01-01 -r yourTagName
Non conosco nessuno strumento che possa aiutarti, ma se ne stai scrivendo uno tuo, posso salvarti da un problema:Le directory in CVS non possono essere tagget.Solo i file al loro interno hanno tag (e questo è ciò che determina cosa viene estratto quando si estrae una directory con un tag specifico).