Hat svn einen Befehl "Alles zurücksetzen"?


159

Wenn ich alle meine Änderungen wegwerfen und zu dem Code zurückkehren möchte, der sich im Repository befindet, gehe ich wie folgt vor:

$ rm -fr *
$ svn up

Das ist einfach genug, aber ich frage mich, ob es einen einzigen Befehl gibt, der dies erreicht, etwa:

$ svn revert-all

Wer verwendet -fr anstelle von -rf? Es gibt einen Grund, warum es Rimraf ausgesprochen wird, nicht Rimfer.
Jimmy Hoffa

@ JimmyHoffa Was ist der Grund?
Eric Wilson

3
Wilson des Konvents! Konventionen, Sir! Ohne unsere Disziplin und kulturellen Traditionen sind wir nur Wilde! Ich sage, guten Tag, Sir!
Jimmy Hoffa

Antworten:


306

Du könntest es tun:

svn revert -R .

Dadurch werden keine neuen Dateien gelöscht, die nicht der Versionskontrolle unterliegen. Sie können jedoch einfach ein Shell-Skript schreiben, um Folgendes zu tun:

for file in `svn status|grep "^ *?"|sed -e 's/^ *? *//'`; do rm $file ; done

2
Willkommen bei SO und vielen Dank für eine gründliche Antwort, da dies svn revert -Rnicht den beiden Befehlen entspricht, die ich gegeben habe.
Eric Wilson

1
Zum Entfernen aller Dateien, die nicht der Versionskontrolle in der Windows-Befehlszeile unterliegen, lautet
Christiaan Westerbeek

Benutzer mashzo wies (in einer jetzt gelöschten Antwort) darauf hin, dass das -RFlag möglicherweise erforderlich ist, um sicherzustellen, dass auch nicht versionierte Verzeichnisse gelöscht werden, um alle Änderungen wegzuwerfen . Erwägen Sie, dies in Ihre Antwort aufzunehmen, wenn Ihnen dies angemessen erscheint.
Jeremy Banks

27

Es gibt einen Befehl

svn revert -R .

ODER
Sie können --depth = unendlich verwenden, was tatsächlich dasselbe ist wie oben:

svn revert --depth=infinity 

svn revertist von Natur aus gefährlich, da der gesamte Zweck darin besteht, Daten wegzuwerfen, nämlich Ihre nicht festgeschriebenen Änderungen. Sobald Sie zurückgesetzt haben, bietet Subversion keine Möglichkeit, diese nicht festgeschriebenen Änderungen zurückzugewinnen


7
-Rist gleichbedeutend mit--depth=infinity
Michael Burr

4
Ihrem cmd "svn revert -R" fehlt das aktuelle Verzeichnis in der Syntax. Es sollte "svn revert -R" sein.
Boddhisattva

Derzeit klingt der Beitrag so -R, --depth-infinityals würde er sich gegenseitig ausschließen, wenn dies nicht der Fall ist.
Ahnbizcad

@ahnbizcad Sind diese beiden genauen Synonyme nicht überhaupt?
Nyerguds

Das ist mein Punkt. Diese Antwort lässt die beiden unterschiedlich klingen, wenn es nicht so ist. "sich gegenseitig ausschließen" = Gegenteil von Synonym
ahnbizcad

17

Verwenden Sie den rekursiven Schalter --recursive (-R)

svn revert -R .

0

So setzen Sie geänderte Dateien zurück:

sudo svn revert
svn status|grep "^ *M" | sed -e 's/^ *M *//'

Ich denke, meine Formatierungsänderung repräsentiert, was Sie wollen. Rollback, wenn es dir nicht gefällt. Und danke, es ist gut, sich an die schlechten alten Zeiten von SVN zu erinnern ... :)
Eric Wilson
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.