117 Stimmen

Automatisches Entfernen nicht versionierter Subversion-Dateien

Kennt jemand eine Möglichkeit, alle Dateien in einer Arbeitskopie, die nicht unter Versionskontrolle stehen, rekursiv zu entfernen? (Ich brauche dies, um zuverlässigere Ergebnisse in meinem automatischen VMware-Build zu erhalten).

7 Stimmen

Ich bin ein SVN-Benutzer und habe Git mit SVN verglichen, um herauszufinden, ob ich eventuell umsteigen möchte. Es sieht so aus, als ob dies ein weiteres Beispiel ist, bei dem Git mit seinem Befehl "git clean" glänzt.

3 Stimmen

Oder hg purge --all in Mercurial.

0 Stimmen

Duplikat von stackoverflow.com/questions/2803823/ wo es viel mehr nützliche Aktivitäten gibt.

7voto

Kyle Punkte 3635

Ich habe Folgendes zu meinem Windows-Powershell-Profil hinzugefügt

function svnclean {
    svn status | foreach { if($_.StartsWith("?")) { Remove-Item $_.substring(8) -Verbose } }
}

2 Stimmen

@FelipeAlvarez Ja. Ja, das tun wir. Es ist nicht das Tollste seit geschnittenem Brot, aber es ist besser als Stapelware. Ich würde sagen, es ist mindestens so nützlich wie Bash, wahrscheinlich ein bisschen mehr, da Sie in .NET Assemblies ziehen können.

0 Stimmen

Es leidet unter Microsofts abscheulicher Tendenz zur Ausführlichkeit (nicht nur in Bezug auf die Länge der Befehlsnamen, sondern auch in Bezug auf die generelle Unmöglichkeit, etwas zu tun, ohne riesige Schnipsel aus dem Internet zu kopieren), aber es ist schockierend nützlich und ziemlich gut durchdacht.

1 Stimmen

Sie möchten vielleicht Folgendes hinzufügen --no-ignore a svn status y -Recurse a Remove-Item

5voto

Ivan Zhakov Punkte 4101

Subversion 1.9.0 führte die Option ein, nicht versionierte Objekte zu entfernen [1]

svn cleanup --remove-unversioned

[1] https://subversion.apache.org/docs/release-notes/1.9.html#svn-cleanup-options

5voto

Tun Sie es einfach auf der Unix-Shell mit:

rm -rf `svn st . | grep "^?" | cut -f2-9 -d' '`

0 Stimmen

Dies funktioniert nicht, wenn die Anzahl der zu löschenden Dateien die maximale Anzahl von Befehlszeilenargumenten überschreitet. Siehe auch die xargs-basierten Antworten.

5voto

user9876 Punkte 10656

Linux-Befehlszeile:

svn status --no-ignore | egrep '^[?I]' | cut -c9- | xargs -d \\n rm -r

Oder wenn einige Ihrer Dateien im Besitz von Root sind:

svn status --no-ignore | egrep '^[?I]' | cut -c9- | sudo xargs -d \\n rm -r

Dies basiert auf Kens Antwort. (Kens Antwort überspringt ignorierte Dateien; meine Antwort löscht sie).

4voto

rob bentley Punkte 133

Wenn Sie tortoise svn verwenden, gibt es einen versteckten Befehl, um dies zu tun. Halten Sie die Umschalttaste gedrückt, während Sie mit der rechten Maustaste auf einen Ordner klicken, um das Kontextmenü im Windows-Explorer zu öffnen. Sie erhalten dann den Befehl "Nicht versionierte Objekte löschen".

siehe unten auf dieser Seite Seite für Details, oder das Bildschirmfoto unten, das die erweiterten Merkmale mit den grünen Sternen und das interessante mit dem gelben Rechteck hervorhebt...

SVN Extended context menu vs standard menu

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X