SVN: Saubere Kopien von der Befehlszeile entfernen oder löschen

6134
hardmooth

Wie kann ich alle makellosen Kopien einer Arbeitskopie von der Befehlszeile entfernen oder löschen?

Anwendungsfall:

  • Ich habe mehrere Arbeitskopien (20+) ausgecheckt
    (gleicher Fall für viele Entwickler in unserer Firma).
  • Einige dieser Arbeitskopien werden mit der Zeit groß
  • Wenn der Speicherplatz knapp ist, muss ich jede Arbeitskopie wie in dieser Antwort beschrieben von Hand bereinigen (zuvor prüfen, welche Arbeitskopien den größten Speicherplatz beanspruchen).
  • Bonus: Berechnen Sie den von unberührten Kopien belegten Speicherplatz, und rufen Sie nur die Bereinigung auf, wenn ... GBs freigegeben werden.

Dies ist langwierig und fehleranfällig, daher möchte ich diese 20+ Bereinigungen zu einem vacuum_pristine_copies.XXXSkript automatisieren, das in der Stunde der größten Notwendigkeit ausgeführt werden kann.

beiliegendes Etikett

  • Es ist möglich, cleanupvon der Befehlszeile aus aufzurufen (siehe die Dokumente hier ).
    Dies hat jedoch keine /vacuum-pristineOption. (Wir verwenden diese TortoiseSVN-Automatisierung bereits für Stapelaktualisierungen).
  • Wir arbeiten an Windows-Computern, aber nicht behoben CMD.
    Eine mögliche Alternative könnte Python27 sein.
1

2 Antworten auf die Frage

4
dotn3b

For TortoiseSVN the option or parameter is /vacuum as mentioned by the developer in an email. As you've pointed out it is currently missing in the documentation.

SVN 1.8 introduced automatic vacuuming of pristines to the cleanup command and 1.9 made it and other features optional. Source: SVN changelog.

Mein Problem mit dem Befehl "TortoiseProc.exe /: Bereinigung / Vakuum ..." besteht darin, dass für jedes Arbeitsverzeichnis ein Dialogfeld geöffnet wird. Ich würde das Feuer-und-Vergessen-Skript vorziehen. Die `svn-Bereinigung 'reduziert die Größe des Arbeitsverzeichnisses (> 6 GB) nicht, während eine TortoiseSVN-Bereinigung (<4 GB) ausgeführt wird. hardmooth vor 7 Jahren 0
@hardmooth Wie in der von Ihnen verlinkten TSVN-Automatisierungsdokumentation erwähnt, sollten Sie den Dialog mit `/ noui`,` / noprogressui` und / oder `/ nodlg` ausblenden können. Was den Standard-SVN-Client angeht: Was ich aus dem 1.9.4-Quellcode entnehmen kann, ist, dass Sie nicht --remove-unversioned oder --remove-ignored angeben dürfen. Der Begriff _vacuum_ wird nicht nur im Hinblick auf das "Staubsaugen von Pristines" verwendet, sondern auch beim Entfernen unversionierter oder ignorierter Dateien, was IMHO zu Verwirrung im Code und scheinbar zu seiner Implementierung führt. Stellen Sie außerdem sicher, dass der von Ihnen angegebene Pfad das Stammverzeichnis des WC ist. dotn3b vor 7 Jahren 0
Der erste Link ist defekt, vielleicht enthält [dieser Thread] (https://groups.google.com/forum/#!topic/tortoisesvn/D_xNVYO1mlk) die gleichen Informationen. Die "no ui" -Syntax wäre so etwas wie TortoiseProc.exe / command: cleanup / noui / cleanup / vakuum / externals / refreshshell / noprogressui / path: .` (belassen Sie den Pfad bei `.` für den aktuellen Ordner oder ändern Sie ihn bei Bedarf Kurs). Zu beachten ist, dass dieser Befehl nicht blockiert, dh er startet einfach den Prozess und kehrt sofort zurück. Wenn Sie diesen Befehl in einer for-Schleife in einem Batch-Skript ausführen, können viele Hintergrundprozesse entstehen. Groo vor 6 Jahren 0
1
hearst

Für svn vor 1.10 geben Sie einfach "svn cleanup" ohne Parameter ein. Svn saugt Pristines nach dem Bereinigen automatisch auf.

Für svn 1.10 (vielleicht oder später, hoffe ich) tippen Sie den obigen Befehl zusammen mit "--vacuum-pristines" ("svn cleanup --vacuum-pristines") ein, und svn wird dasselbe für Sie tun. Sie können jedoch auch andere Parameter hinzufügen und svn führt alle in einem Befehl aus. Zum Beispiel ("svn cleanup --remove-unversioned --remove-ignored --vacuum-pristines")

Wie bei älteren Versionen wird der Befehl "svn cleanup" ohne Parameter ebenfalls in 1.10 abgesaugt.

`svn cleanup --vacuum-pristines` liefert (SVN 1.9.3) den Fehler` svn.exe: ungültige Option: --vacuum-pristines` hardmooth vor 5 Jahren 0
Ich habe dir gesagt, dass --vacuum-pristines nur für svn v1.10 oder höher verfügbar ist. Könntest du meine Worte genauer überprüfen? hearst vor 5 Jahren 0
Ja hast du! Mein Fehler - ich lese '1.1.0' anstelle von '1.10'. hardmooth vor 5 Jahren 0