Frage

In letzter Zeit verschiebe ich Quelldateien in unserem Quellbaum.Platzieren Sie beispielsweise eine Reihe von Dateien in einer gemeinsamen Baugruppe.Ich habe dies getan, indem ich die Datei aus CVS gelöscht und sie dann an der neuen Stelle erneut hinzugefügt habe.Das Problem besteht darin, dass die Revisionsnummer der Datei auf 1.1 zurückgesetzt wird.Gibt es eine einfache Möglichkeit, Dinge zu verschieben, ohne die Nummer zurücksetzen zu müssen?

Ich hätte wahrscheinlich erwähnen sollen, dass ich keinen Zugriff auf das Repository habe, daher hilft mir alles, was erforderlich ist, nicht, aber es könnte anderen helfen.

War es hilfreich?

Lösung

Es gibt keine Möglichkeit, Dateien mit nur Kundenbefehlen zu verschieben. Sie benötigen Zugriff auf das Server -Dateisystem und können die Datei ", v" im Repository an einen neuen Speicherort verschieben. Dies wird die gesamte Geschichte behalten, da CVS jede Revision und ihre Kommentare in dieser einen Datei aufzeichnet.

Beachten Sie, dass Dateien in einen "Dachboden" -Sterdruder (der vom Kunden nicht gesehen werden kann), wenn sie gelöscht werden. So können Dateien nach dem Löschen wiederhergestellt werden.

Im Allgemeinen gibt es keine unmittelbaren Probleme mit diesem Ansatz. Sie müssen jedoch die Konsequenzen berücksichtigen, falls Sie sich entscheiden, eine frühere Version Ihres Produkts zu überprüfen, die möglicherweise auf der vorherigen Verzeichnisstruktur beruht!

Hier haben andere Revisionskontrollsysteme wie Subversion einen endgültigen Vorteil.

Andere Tipps

Der allgemein anerkannte Weg, diesen Effekt zu erreichen, besteht darin, die folgenden Schritte auszuführen. Der technische Begriff dafür ist eine Repokopie.

  1. Melden Sie sich auf dem Server an, auf dem das CVS -Repository und das CVS -Repository gehostet und Kopieren (Verschieben Sie sich nicht) Die Repository -Datei von dem Ort, an dem Sie sie an den neuen Standort möchten.
  2. Löschen Sie auf der Client -Seite die Datei vom alten Standort.
  3. Aktualisieren Sie auf der Client -Seite CVS die Verzeichnisinhalte im neuen Speicherort (so dass die Datei dort angezeigt wird).
  4. Auf der Clientseite führen Sie ein erzwungenes CVS -Commit (unter Verwendung des -F -Flags) der kopierten Datei durch, um die Tatsache zu protokollieren, dass es repokopiert wurde (fügen Sie zu diesem Effekt einen Protokoll -Kommentar hinzu).

Diese Prozedur behält den Dateiverlauf in seinem neuen Standort bei und bricht auch nicht die Rückwärtskontinuität des Repositorys. Wenn Sie sich in die Zeit zurückziehen, wird die Datei korrekt an ihrem alten Ort angezeigt. Sie können auch dieselbe Prozedur verwenden, um eine Datei umzubenennen.

Das Online -CVS -Handbuch hat einige Details dazu:

Die normale Möglichkeit, eine Datei zu verschieben, besteht darin, einen CVS -Befehl umbenannt zu haben.

$ cvs benennen alte neue um
$ CVS Commit -m "Umbenannt in neu umbenannt"

Dies ist der einfachste Weg, um eine Datei zu verschieben. Es ist kein fehleranfällig und bewahrt die Geschichte dessen, was getan wurde. CVSNT -Clients können den ursprünglichen Namen abrufen, indem sie eine ältere Version des Repositorys überprüfen.

Diese Funktion wird nur auf CVSNT -Servern 2.0.55 und später unterstützt.

Der einfachste Weg wäre, den CVS -Server zu verfolgen, auf dem sich Ihr Repo befindet, und einfach Ihre Ordner/Dateien mit MV verschieben (unter der Annahme einer *Nix -Maschine). Auf diese Weise wird die Geschichte der Datei aufbewahrt.

Ist dies nicht einer der bekannten Fehler mit Lebensläufen - kein eingebauter Mechanismus für das Verschieben von Dateien? Es ist schon lange her, dass ich es verwendet habe, also gibt es jetzt vielleicht eine Lösung.

Mit Subversion können Sie Dateien verschieben, aber dies wird auch verfolgt, sodass die neue Datei die neueste Revisionsnummer erhält.

Es scheint, dass der Versionsverlauf erhalten bleibt, wenn Sie beim Verschieben die Option -v verwenden (siehe unten).

Das Umbenennen von Dateien in CVS ist umständlich.In den Standpunkt der Repository können Sie nur Dateien löschen oder neue hinzufügen.Der übliche Prozess ist also

MV oldfile.c newfile.c CVS ​​löschen oldFile.c CVS ​​Fügen Sie newfile hinzu.c

Dies funktioniert, aber Sie verlieren alle Veränderungsinformationen, die Sie während der jahrelangen harter Entwicklung in den Commit -Operationen geschrieben haben, und das ist wahrscheinlich nicht das, was Sie wollen.Aber es gibt einen Weg;Sie müssen direkten Zugriff auf das Repository haben.Gehen Sie zuerst dorthin, finden Sie das Verzeichnis, in dem sich Ihr Projekt befindet, und machen Sie Folgendes:

cp alte Datei.c,v neue Datei.c,v

Gehen Sie nun zu Ihrem Arbeitsverzeichnis und machen Sie ein CVS -Update.newfile.c wird als neue Datei angezeigt.Jetzt können Sie CVS oldfile.c löschen und sich verpflichten.

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