Wie finde ich heraus, welche CVS-Tags welche Dateien und Pfade abdecken?

StackOverflow https://stackoverflow.com/questions/28817

  •  09-06-2019
  •  | 
  •  

Frage

Es gibt ein altes CVS-Repository, das eine große Anzahl von Verzeichnissen, Unterverzeichnissen und Pfaden enthält.Es gibt auch eine große Anzahl von Zweigen und Tags, die nicht unbedingt alle Pfade und Dateien abdecken – normalerweise eine Teilmenge.Wie kann ich herausfinden, welcher Zweig/Tag welche Dateien und Pfade abdeckt?

Das CVS-Protokoll stellt bereits die Liste der Tags pro Datei bereit.Die Aufgabe erfordert, dass ich dies pro Tag in Dateien umwandele.Ich konnte eine solche Funktionalität in der aktuellen WinCVS-Implementierung (CVSNT) nicht finden.Wenn genügend leere Zyklen vorhanden sind, kann ich ein Perl-Skript schreiben, das dies tun würde. Der Algorithmus ist nicht komplex, aber er muss ausgeführt werden.

Ich könnte mir vorstellen, dass es einige Leute gibt, die solche Informationen brauchten und dieses Problem gelöst haben.Daher denke ich, dass es dafür ein leicht verfügbares (Open Source/kostenloses) Tool geben sollte.

War es hilfreich?

Lösung

Um festzustellen, welche Tags für eine bestimmte Datei gelten, verwenden Sie Folgendes:

cvs log <filename>

Dadurch werden alle Versionen der Datei und die auf die Version angewendeten Tags ausgegeben.

Um festzustellen, welche Dateien in einem einzelnen Tag enthalten sind, kann ich mir nur vorstellen, mithilfe des Tags auszuchecken und zu sehen, welche Dateien zurückkommen.Der Befehl dafür ist einer von:

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

Andere Tipps

Um Tags in einer Datei aufzulisten, kann man auch Folgendes tun:

cvs status -v <file>

Die oben beschriebene Methode hat bei mir nicht funktioniert

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

Aber nach langem Herumprobieren ist mir das klar geworden

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

funktioniert

Sie müssen keinen tatsächlichen Checkout durchführen.Mit der Option -n können Sie dies nur simulieren:

cvs -n co -rTagName ModuleName

Dadurch erhalten Sie die Namen aller mit TagName gekennzeichneten Dateien im Modul ModuleName.

Der folgende Befehl gibt eine Liste der Dateien aus, die sich in diesem Tag „yourTagName“ befinden.Die Dateien sind alle als neu markiert, die Revisionsinformationen in „yourTagName“.

Dieser Befehl macht einen Unterschied zwischen dem 01.01.2000 und Ihrem Tag. Sie können gerne ein anderes Datum verwenden, das früher liegt.

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

Ich kenne kein Tool, das Ihnen helfen kann, aber wenn Sie Ihr eigenes schreiben, kann ich Ihnen einen Kopfzerbrechen ersparen:Verzeichnisse in CVS können nicht mit Tags versehen werden.Nur die darin enthaltenen Dateien verfügen über Tags (und diese bestimmen, was ausgecheckt wird, wenn Sie ein Verzeichnis mit einem bestimmten Tag auschecken).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top