SVN: Können Sie Verzeichnisse nur von einer lokalen Kasse entfernen (nicht aus dem Repository)?

Angenommen, Sie haben ein Verzeichnis unter Subversion-Kontrolle, das einige Dateien und Tonnen von Unterverzeichnissen enthält:

file1.txt
file2.txt
file3.txt
dir1/
dir2/
dir3/
dir4/
:
dirXX/

Jetzt brauchen Sie die Dateien und einige der Verzeichnisse, aber nicht alle. Dies kann mit SVN erfolgen. Machen Sie den Checkout einfach nicht rekursiv:

svn checkout -N <URL>

Dadurch werden nur das erste Verzeichnis und die darin enthaltenen Dateien ausgecheckt. Es sind keine Unterverzeichnisse enthalten. Auch wenn Sie in das Checkout-Verzeichnis gehen und ein "svn upmsgstr "" "werden nur die zuvor ausgecheckten Dateien aktualisiert, die Verzeichnisse werden nicht hinzugefügt. Sie können nun die benötigten Verzeichnisse selektiv hinzufügen, indem Sie diese explizit aktualisieren. Wenn Sie beispielsweise nur dir2 und dir4 benötigen, können Sie in das Checkout - Verzeichnis und wechseln ausführen

svn up dir2
svn up dir4

Wenn Sie ein generisches "svn upmsgstr "" "in Zukunft werden nur die Dateien und diese beiden Verzeichnisse aktualisiert, es werden keine weiteren Verzeichnisse hinzugefügt.

Jetzt das Problem: Was ist, wenn ich zu einem späteren Zeitpunkt entscheide, dass ich dir2 nicht mehr brauche? Wie werde ich es los? Es scheint keine andere Möglichkeit zu geben, als den gesamten Checkout zu löschen und von vorne zu beginnen.

Wenn Sie nur dir2 löschen, wird die nächste "svn up"wird es zurückbringen, als"svn statusmsgstr "" "zeigt es jetzt als fehlend an ("! "vor seinem Namen).svn removemsgstr "" "wird es natürlich entfernen, aber beim nächsten Commit wird es auch aus dem Repository entfernt, was nicht passieren darf.

Sogar die neue Funktion für Verzeichnisse mit geringer Dichte ("shallow checkout") von SVN 1.5 ist hier nicht von Nutzen:

Die Implementierung flacher Checkout-Vorgänge in Subversion 1.5 ist gut, unterstützt jedoch einige interessante Verhaltensweisen nicht. Erstens können Sie ein Arbeitskopienobjekt nicht demontieren. Wenn Sie svn update --set-depth empty in einer Arbeitskopie mit unendlicher Tiefe ausführen, wird nicht alles außer dem obersten Verzeichnis verworfen, sondern lediglich ein Fehler ausgegeben.
- http://svnbook.red-bean.com/de/1.5/svn.advanced.sparsedirs.html

Ist das mit SVN überhaupt nicht möglich? Hat sich jemals jemand eine clevere Lösung ausgedacht?

Das Erstellen des Auscheckverzeichnisses (ohne SVN) und das direkte Auschecken der einzelnen Unterverzeichnisse aus dem Repository als Unterverzeichnisse in dieses Verzeichnis funktioniert für die Verzeichnisse: Jetzt ist jedes Verzeichnis ein Auschecken für sich, kann aktualisiert werden und wird nicht mehr benötigt Sie können es einfach löschen. Wie bekomme ich dann die Dateien (z. B. Datei1.txt)? SVN erlaubt nicht das Auschecken einzelner Dateien, Sie können nur ganze Verzeichnisse auschecken.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage