Wie entferne ich das Subversion-Steuerelement für einen Ordner?

259

Ich habe einen Ordner, der c:\websites\testOrdner und Dateien enthält, die aus einem nicht mehr vorhandenen Repository ausgecheckt wurden. Wie kann ich Subversion dazu bringen, die Verfolgung dieses Ordners und aller Unterordner und Dateien zu beenden?

Ich weiß, dass ich den .svnOrdner einfach löschen könnte , aber es gibt viele Unterordner in vielen Ebenen.

Brian Boatright
quelle
1
Wenn Sie TortioseSVN verwenden, habe ich einen Blog-Beitrag geschrieben, der den schnellsten Weg dazu zeigt. Mein Beitrag enthält schrittweise Anleitungen mit Bildern. Dieser Beitrag ist verfügbar unter http://www.ecofic.com/about/blog/disconnecting-folder-from-svn
Chad Campbell
Beziehen Sie sich auf meine Antwort, die vielen geholfen hat. stackoverflow.com/questions/4889619/…
Ajit Vaze

Antworten:

258

Wenn Sie TortoiseSVN verwenden, exportieren Sie einfach in den aktuellen Speicherort der Arbeitskopie und die .svn-Ordner und -Dateien werden entfernt.

http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-export.html#tsvn-dug-export-unversion

Aktualisierte Antwort für Subversion 1.7:
In Subversion 1.7 wurde die Arbeitskopie umfassend überarbeitet. Es gibt nur einen .svn-Ordner, der sich in der Basis der Arbeitskopie befindet. Wenn Sie 1.7 verwenden, ist das Löschen des .svn-Ordners und seines Inhalts eine einfache Lösung (unabhängig von der Verwendung von TortoiseSVN oder Befehlszeilentools).

Crashmstr
quelle
8
Der Link ist jetzt ein 404. Neuer Link: tortoisesvn.net/docs/release/TortoiseSVN_en/… Der Export-Over-Current scheint nur ein Sonderfall zu sein, bei dem die .svn-Dateien nur entfernt werden, wenn Sie angeben, auch nicht versionierte Dateien zu behalten.
Lilbyrdie
Nach erfolgreichem Entfernen, um Ihr Ordnersymbol im normalen
Zustand wiederherzustellen,
Der Server hätte nichts mit Tortoise-Ordnersymbolen zu tun. Wenn sie jedoch nicht aktualisiert werden, können Sie versuchen, den TSVNCache-Prozess zu beenden. Es sollte automatisch neu starten.
Crashmstr
1
In meinem Fall habe ich git Ordner auch zusammen mit .svn Ordner gelöscht
Aftab Ahmed Kalhoro
155

Unter Linux funktioniert dies:

  find . -iname ".svn" -print0 | xargs -0 rm -r
Max Cantor
quelle
10
Funktioniert auch unter Mac OS.
Emish
2
Stellen
Sie
Ich bekomme rm: fehlender Operand
Winter
119

Versuchen Sie es mit svn export .

Sie sollten in der Lage sein, so etwas zu tun:

svn export /path/to/old/working/copy /path/to/plain/code

Und dann löschen Sie einfach die alte Arbeitskopie.

TortoiseSVN verfügt auch über eine Exportfunktion , die sich genauso verhält.

pkaeding
quelle
4
Vielen Dank für die Antwort, die mit der Befehlszeile funktioniert. :) Großartig für diejenigen von uns, die Terminals benutzen.
Epochwolf
16
Wenn ich das richtig verstehe, exportiert dieser Befehl nur die Dateien, die derzeit unter Subversion-Kontrolle stehen. Wenn also einige Dateien oder Ordner noch nicht zur Subversion hinzugefügt wurden oder aus der Subversion-Kontrolle entfernt wurden, verlieren Sie diese Dateien bei Ihrem Export ...
Chris
@ Chris, ja, du bist richtig. Dadurch werden nur die versionierten Dateien exportiert. Dies ist gut für den Export des Codes und das Zurücklassen abgeleiteter Artefakte usw. geeignet, ist jedoch möglicherweise nicht für jeden Auftrag das richtige Werkzeug.
pkaeding
4
Bemerkenswert ist, dass dies immer noch funktioniert, wenn der SVN-Server schon lange nicht mehr vorhanden ist. Wenn Sie versuchen, mit VisualSVN oder Tortoise SVN zu exportieren, scheint es, als würde versucht, den Server zu kontaktieren, aber die obige Befehlszeilenversion hat bei mir funktioniert, ohne dass der SVN-Server noch ausgeführt wird.
Dave
Ich erhalte eine Fehlermeldung:svn: E000002: Can't stat '/.classpath': No such file or directory
IgorGanapolsky
32

Wenn Sie Windows ausführen, können Sie in diesem Ordner nach suchen .svnund alle auflisten. Durch Drücken von Ctrl+ Awerden alle ausgewählt, und durch Drücken von Löschen werden alle lästigen Subversion-Inhalte entfernt.

graham.reeds
quelle
lästig in der Tat ;-) Ich muss es nur aufräumen und werde es wieder in ein neues Repository stellen.
Brian Boatright
2
Das ist auch eine großartige Möglichkeit, die lästigsten Frontpage-Erweiterungsordner zu löschen!
Brian Boatright
Laden Sie das Dienstprogramm Everything Search herunter und verwenden Sie es, um .svn-Ordner in Lichtgeschwindigkeit zu finden und zu löschen :) voidtools.com Nur Windows!
Endo64
23

Unter Linux lautet der Befehl:

svn delete --keep-local file_name
bunteKnete
quelle
21

Ich habe festgestellt, dass Sie nicht einmal an einen temporären Speicherort kopieren müssen. Sie können eine tun

svn export --force .

und die .svn - Dateien werden entfernt in situ , die anderen Dateien als verlässt. Sehr praktisch und weniger unübersichtlich.

IJ Kennedy
quelle
4
Ich weiß nicht was es ist, aber es hat aus irgendeinem Grund bei mir nicht funktioniert.
Widder VII
1
Dieser Befehl funktioniert nur für die Arbeitskopie, nicht für einen Ordner darin. Vielleicht eine Variante desselben ...?
2
Dies funktioniert nicht, wenn die installierte Version von Subversion 1.7 und das Repository 1.6 ist. "SVN-Upgrade" kann jedoch vor dem Export ausgeführt werden und funktioniert.
Peter Mortensen
11

Ohne Subshells unter Linux zum Löschen von .svnOrdnern:

find . -name .svn -exec rm -r -f {} +

rm = remove
-r = recursive (folders)
-f = force, avoids a lot of "a your sure you want to delete file XY".
user1439712
quelle
8

Keine dieser Antworten war für meine Situation zufriedenstellend. Ich bin auf Subversion 1.8 und hatte eine Arbeitskopie, die nur eine einzige hatte.svn Ordner im allerersten Ordner hatte, root. Ich wollte jedoch einige Zweige aus der Arbeitskopie entfernen.

Egal was ich getan habe, jedes Mal, wenn ich ein 'Update' ausführte, wurden diese Dateien wiederhergestellt und alle zurückgebracht. Ich wollte sie nicht aus dem Repository entfernen, sondern nur von meinem Computer - aber ich musste den Rest der Arbeitskopie auf dem neuesten Stand halten (konnte also nicht einfach den .svn-Ordner entfernen).

Lösung? svn update --set-depth exclude <dir>

Dies ist ein clientseitiges "Update", das ein bestimmtes Verzeichnis ausschließt. Es finden Sie in den Handbüchern unter svnbook.com . Kurz gesagt, es beschreibt dies als:

Ab Subversion 1.6 können Sie einen anderen Ansatz wählen. Überprüfen Sie zunächst das Verzeichnis vollständig. Führen Sie dann svn update --set-depth exclude für das eine Unterverzeichnis aus, das Sie nicht interessieren.

Bei TortoiseSVN können Sie dasselbe auch tun, indem Sie mit der rechten Maustaste auf den gewünschten Ordner klicken, auf klicken Update to revision...und dann die Aktualisierungstiefe auf einstellen Exclude, wie in diesem Screenshot dargestellt:

Geben Sie hier die Bildbeschreibung ein

brasilianldsjaguar
quelle
Sie können jedoch keine Stammordner für Arbeitskopien entfernen.
JaBe
8

Es hat gut funktioniert für mich:

find directory_to_delete/ -type d -name '*.svn' | xargs rm -rf
Manikandan S.
quelle
Dies ist eine so einfache Lösung, die jedoch wie ein Zauber wirkt.
IgorGanapolsky
@IgorGanapolsky Ich bin froh. Meine Lösung wird Ihnen geholfen.
Manikandan S
Solange niemand gelaufen ist mkdir -p ';echo Hi Johnny;/.svn'- in diesem Fall sollte der {} Aufruf von find trotzdem funktionieren
Nie wieder schlafen
7

Verwenden Sie den svn exportBefehl:

cd c:\websites\test
svn export c:\websites\test_copy

Alle Dateien unter Versionskontrolle werden exportiert. Stellen Sie sicher, dass Sie nichts verpasst haben.

1800 INFORMATIONEN
quelle
4

Entfernen Sie einfach den .svn-Ordner im gewünschten Ordner, dann wird das Steuerelement automatisch entfernt.

Ramudu
quelle
3

Unter Windows können Sie Ihrem Explorer einen Quicklink zum Kontextmenü hinzufügen. Starten Sie einfach dieses Registrierungsskript:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Folder\shell\DeleteSVN]
@="Delete SVN Folders"

[HKEY_CLASSES_ROOT\Folder\shell\DeleteSVN\command]
@="cmd.exe /c \"TITLE Removing SVN Folders in %1 && COLOR 9A && FOR /r \"%1\" %%f IN (.svn) DO RD /s /q \"%%f\" \""

Dadurch wird Ihrem Kontextmenü ein Element mit dem Namen "SVN-Ordner löschen" hinzugefügt. Dadurch werden alle .svn-Ordner in diesem Ordner und alle Unterordner gelöscht.

Quelle (deutsch): http://www.sjmp.de/software/alle-svn-ordner-und-dateien-loeschen/

Tobias
quelle
2

Sie können "svn export" verwenden, um eine Kopie dieses Ordners ohne svn-Daten zu erstellen, oder Sie können diesen Ordner hinzufügen, um die Liste zu ignorieren

andy.gurin
quelle
2

Für diejenigen, die NetBeans mit SVN verwenden, gibt es die Option 'Subversion> Export'.

Ladik
quelle
2

Es gibt auch ein nettes kleines Open Source-Tool namens SVN Cleaner, das dem Windows Explorer-Kontextmenü drei Optionen hinzufügt:

  • Entfernen Sie alle .svn
  • Entfernen Sie alle außer Root .svn
  • Lokale Repo-Dateien entfernen
Martin Buberl
quelle
2

Unter Windows 7 kann man einfach den Projektordner öffnen und nach ".svn" suchen, wenn versteckte Dateien aktiviert sind, und alle gefundenen .svn-Ordner löschen.

Unknown_Guy
quelle
1
Win Win XP, das auch gut funktioniert. Beachten Sie, dass mit SVN 1.7 die.svn Verzeichnisse nicht mehr verstreut vorhanden sind. Weitere Informationen finden Sie unter subversion.apache.org/docs/release-notes/1.7.html#wc-ng
Joao Coelho
1

Die Antwort ist überraschend einfach - exportieren Sie den Ordner in sich selbst ! TortoiseSVN erkennt diesen Sonderfall und fragt, ob Sie die Arbeitskopie nicht versionieren möchten. Wenn Sie mit Ja antworten, werden die Steuerungsverzeichnisse entfernt und Sie haben einen einfachen, nicht versionierten Verzeichnisbaum.

Srikanth
quelle
1
Zitiert dies nicht nur die akzeptierte Antwort, die vor 5 Jahren gegeben wurde?
Ben Thurley
1

Eine andere (einfachere) Linux-Lösung:

rm -r `find /path/to/foo -name .svn`
Dougvj
quelle
1

DER BESTE UND EINFACHSTE WEG

Wenn Sie denken, dass Sie mit einem einfachen magischen Befehl gewinnen könnten, sind Sie gescheitert! SVN ist wirklich knifflig und kommt immer irgendwie mit einer neuen Fehlermeldung in Xcode zurück. Versprich früher oder später ... also musst du es klug machen!

Wie Sie wissen, wird unter Xcode regelmäßig eine Datei im Projektfenster auf der linken Seite gelöscht. Wenn Sie es verpasst und irgendwie im Finder gelöscht haben, sind Sie in Schwierigkeiten. Große Schwierigkeiten! Aber Sie könnten es lösen und Freizeit haben, wenn Sie es gut machen.

Zunächst müssen Sie den SVN-Verweis auf die Datei oder den Ordner löschen, bevor Sie ihn tatsächlich löschen können

  1. Wenn Sie die Datei / den Ordner einfach aus dem Papierkorb zurücklegen oder den letzten Schritt beim Löschen rückgängig machen könnten, dann ...

  2. Gehen Sie zum Terminal - ja, dem guten alten Terminal - und gehen Sie zu diesem Ort. Geben Sie am besten einfach cd ein und ziehen Sie den Ordner / die Datei zum Terminal. Sie werden etwas Ähnliches bekommen

cd / Users / UserName / Documents / Apps_Developing / ...

Sie könnten überprüfen, wo Sie sind

ls

Befehl, der Ihre Dateien auflistet.

  1. Dann müssen Sie die SVN-Referenz mit einem SVN-Befehl löschen:

    svn delete --keep-local fileName_toDelete

Dadurch wird die Datei aus dem SVN-Repository gelöscht, ABER Sie müssen sie manuell im Finder löschen.

Schuhmacher
quelle
0

Ich benutze rsync:

# copy folder src to srcStripped excluding subfolders named '.svn'. retain dates, verbose output
rsync -av --exclude .svn src srcStripped
yeeking
quelle
0

NetBeans IDE-Benutzer können dies wie folgt tun:

  1. Öffnen Sie das SVN-Projekt in Ihrer IDE
  2. Wählen Sie das Projekt aus

    Klicken Sie mit der rechten Maustaste auf Subversion Export

  3. Im Dialogfeld

    Export in Ordner / var / tmp / Projektname Drücken Sie Exportieren. Warten Sie, bis der Vorgang abgeschlossen ist. Sie werden gefragt, ob Sie ihn öffnen möchten. Öffnen Sie ihn im laufenden Betrieb

  4. Du kannst jetzt zu Git wechseln :)

Peter Mortensen
quelle
0

Meine Idee ist, den .svn-Ordner zu entfernen und dann alle anderen Dateien in einen neuen Ordner zu verschieben. So einfach ist das.

Alvin567
quelle
0

Wenn Sie das Windows-Betriebssystem verwenden, gehen Sie zu Ihrem Ordner und überprüfen Sie, ob versteckte Dateien geöffnet sind. Anschließend können Sie den SVN- Ordner dort sehen. Entfernen Sie einfach diesen Ordner.

dush88c
quelle
0

svn export funktioniert gut, aber ich denke das ist:

svn rm --keep-local <folder/file>

Es entfernt es aus Ihrem lokalen Repository.

Javier Salinas
quelle
0

Wenn Sie die Shell zum Löschen von .svn-Ordnern verwenden, benötigen Sie das Argument -depth , um zu verhindern, dass der Befehl find in das gerade gelöschte Verzeichnis gelangt und Fehlermeldungen wie z

"find: ./.svn: Keine solche Datei oder kein solches Verzeichnis"

Infolgedessen können Sie den folgenden findBefehl verwenden:

cd [dir_to_delete_svn_folders]
find . -depth -name .svn -exec rm -fr {} \;
fatihk
quelle
0

Über eine Windows-Befehlszeile:

rmdir .svn /s /q
Michael Ross
quelle
0

Verwenden Sie Folgendes:

svn rm --keep-local <folder name> um den Ordner und alles darin zu entfernen.

svn rm --keep-local <folder name>/* um den Ordner zu behalten, aber alles im Ordner zu entfernen.

Hier ist ein Beispiel dafür, was passiert:

~/code/web/sites/testapp $ svn rm --keep-local includes/data/*
D         includes/data/json
D         includes/data/json/index.html
D         includes/data/json/oembed
D         includes/data/json/oembed/1.0
D         includes/data/json/oembed/1.0/embed1.json
D         includes/data/json/oembed/1.0/embed2.json
D         includes/data/json/oembed/1.0/embed3.json
Ryan
quelle
-1

Unter Windows 10 müssen wir zu gehen Windows Explorerund dann zu gehen Viewund das Kontrollkästchen für aktivierenView hidden files .

Navigieren Sie dann zu dem Ordner, mit dem die SVN im Windows Explorer verknüpft ist, und löschen Sie den .svnOrdner / die Datei.

Praseeda
quelle
Obwohl ich die Formatierung bearbeitet habe, beantwortet diese Antwort die Frage nicht wirklich. Der Benutzer weiß bereits, wie der Basisordner gelöscht .svnwird, fragt jedoch nach allen Unterordnern. Bitte lesen Sie die Frage sorgfältig durch.
CodeMouse92