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.

È stato utile?

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).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top