Frage

Ich bin mir nicht ganz sicher, wie das passiert ist, aber irgendwie eine völlig leere Hierarchie von Verzeichnissen hat in meinem Repository endet:

com/
com/companyname/
com/companyname/blah/
com/sun/
com/sun/java/
com/sun/java/jax_rpc_ri/

Ich denke, was passiert war, dass diese Verzeichnisse Dateien in ihnen haben, aber dann ein Entwickler klar, dass er / sie sollte sie nicht in erster Linie in überprüft hat, da diese Nebenprodukte des Build-Prozesses sind, so dass er / sie entfernte die Dateien aber irgendwie die leeren Verzeichnisse werden im Repository als Relikte links.

Wie kann ich das von CVS entfernen? Die einzigen Ergebnisse, die ich scheinen in der Lage zu sein, auf Google finden sagen, dass es nicht notwendig sein, sollten leere Verzeichnisse zu entfernen, wie CVS sie nicht in erster Linie halten herum, und dass die -P (prune) Optionen sollten cvs update entfernen sie aus dem Arbeitsverzeichnis -., die Null-Hilfe ist, wenn Sie tatsächlich leere Verzeichnisse in Ihrem Repository

Ein cvs remove und cvs commit scheinen nicht Pflege dieser Situation zu nehmen:

$ cvs remove -Rf com
cvs remove: Removing com
cvs remove: Removing com/companyname
cvs remove: Removing com/companyname/blah
cvs remove: Removing com/sun
cvs remove: Removing com/sun/java
cvs remove: Removing com/sun/java/jax_rpc_ri
$ cvs commit com
cvs commit: Examining com
cvs commit: Examining com/companyname
cvs commit: Examining com/companyname/blah
cvs commit: Examining com/sun
cvs commit: Examining com/sun/java
cvs commit: Examining com/sun/java/jax_rpc_ri
$ ls -l com
total 24
drwxrwxr-x  2 matt matt 4096 Oct 15 14:38 CVS
drwxrwxr-x  9 matt matt 4096 Oct 15 14:38 companyname
drwxrwxr-x  4 matt matt 4096 Oct 15 14:38 sun

Es ist immer noch da!

Hat SVN haben dieses seltsame Verhalten zu?

War es hilfreich?

Lösung

AFAIK das CVS-Protokoll nicht Verzeichnisse entfernen erlaubt. Sie sollten auf die Serverkonsole gehen und sie aus dem realen physikalischen Repository entfernen.


http://www.network-theory.co.uk/ docs / cvsmanual / Removingdirectories.html

  

Sie nicht entfernen, das Verzeichnis selbst;   gibt es keine Möglichkeit, das zu tun.

Andere Tipps

CVS-Checkout und Update wird immer leere Verzeichnisse überprüfen; das ist nur die Art und Weise CVS gebaut wird. Sie ein Update mit "-P" - "Pflaume" - entfernen, leere Verzeichnisse:

cvs update -dP

(Hinzufügen von „-d“ werden neue Verzeichnisse aktualisieren, die seit dem letzten Update erschienen,. Sonst, CVS sie ignorieren)

Just tat

  1. rm -rvf / localCopy / Projekt / emptyDirectory
  2. bearbeiten / localCopy / Projekt / CVS / Entries, löschen Linie D / emptyDirectory ////, Datei speichern
  3. rmdir -v / CVSROOT / Projekt / emptyDirectory

bekommen von emptyDirectory in Projekt befreien. Zugeben, nicht echt zu Chaos mit internen CVS-Daten, sondern scheint gearbeitet zu haben (cvs Version 1.12.13).

CVS eine Reihe von Design-Fehler hat, nie in der Lage sein ein Verzeichnis, um loszuwerden, ohne die Geschichte zu verlieren, ist ein. Schwierigkeit Dateien und Verzeichnisse umbenennen, ohne die Geschichte zu verlieren, ist eine andere.

Betrachten Abschluss an Subversion . cvs2svn macht einen sehr guten Job Umwandlung Repositories aller Branchen und Tags einschließlich. Die CVS und SVN-Befehlssätze sind sehr ähnlich und benötigen nur minimale Anpassung. (Und um den Kopf ab dies zu einem „welche Versionskontrolle Sie verwenden sollten“ Krieg), wenn Sie SVN verwenden Sie eine beliebige Anzahl von fortgeschrittenen Versionskontrollsysteme wie git oder SVK .

Das funktionierte für mich. Grundsätzlich Wenn Sie das tun

rmdir -v / CVSROOT / Projekt / emptyDirectory # Wir löschen Verzeichnis aus dem CVS-Repository-Verzeichnis.

Wenn Sie Repository Unix-Server-Login-Zugang haben, können Sie auf den Pfad reisen und das Verzeichnis löschen können, oder das gleiche Interesse mit Unix-Team erhöhen.

cvs neigt auf einem Zwei-Phasen-Ansatz in Bezug auf Verzeichnisse zu arbeiten, das ist, warum es eine Option -P für viele cvs-Befehle zu „Prune leeren Verzeichnissen“.

Wenn dies geschehen ist, z.B. will ein Verzeichnis umbenennen ich gerade hinzugefügt habe, ich das Verzeichnis löschen, löschen Sie den Eintrag für das Verzeichnis im CVS / Entries-Datei, wird es eine Zeile vorangestellt sein mit einem „D“.

Job gemacht.

Wenn ich begangen habe, ich sicherstellen, dass meine aktuelle Arbeitsbereich, der das leere Verzeichnis / n enthält, wird alle eingecheckt. Dann habe ich den Teil des Arbeitsbereichs wegblasen, die ich hinzugefügt haben, die Verzeichnisse zu.

Zum Beispiel in

~/Sandbox/my_project/some_stuff_i_want
~/Sandbox/my_project/empty_dir_1
~/Sandbox/my_project/other_stuff_i_want

ich sicherstellen, dass alles auf dem neuesten Stand ist in beiden Verzeichnissen zu halten, die Sachen, die ich mag enthalten. Ich habe dann wegblasen my_project aus meinem Sandkasten.

Dann lösche ich die leeren Verzeichnisse aus dem Repository selbst .

Gehen sie zurück und den gleichen Arbeitsbereich Check-out, z.B. my_project gibt mir den Arbeitsbereich ohne die leeren Verz.

Oder einfach alles lassen wie es ist und die Option -P benutzen Sie CVS alles Check-out (oder alles aktualisieren), dann die leeren Verz stutzen aus.

HTH

prost,

Rob

Sie können nicht Verzeichnis aus Ihrem Arbeitsbereich löschen, müssen Sie sie löschen von dem Server zu gehen, wo tatsächlicher Repository gehalten wird. aber Sie können Dateien aus dem Verzeichnis mit cvs remove Befehl löschen.

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