Gibt es einen einzelnen Subversion-Befehl, der eine Arbeitskopie genau auf den Status zurücksetzt, der im Repository gespeichert ist? So etwas wie git reset --hard
oder (ha, Hard Git Reset entfernt auch nicht nicht versionierte Dateien!) rm -rf wc && svn co <url> wc
.
Update: Ich bin nicht nach einem einfachen Zurücksetzen, da dadurch keine zusätzlichen Dateien in der Arbeitskopie gelöscht werden. Ich möchte wirklich etwas, das dem Löschen der Arbeitskopie und dem erneuten Auschecken entspricht, nur ohne dass die Daten erneut heruntergeladen werden müssen. (Natürlich macht es mir nichts aus, alle nicht festgeschriebenen Änderungen zu verlieren.)
git clean -xdf
, um Dinge zu entfernen, die nicht unter Quellcodeverwaltung stehen.git clean
Zitate zitiert genau das, wonach ich suche: "Dies kann (möglicherweise in Verbindung mit dem Zurücksetzen von Git) verwendet werden, um ein makelloses Arbeitsverzeichnis zum Testen eines sauberen Builds zu erstellen." Schade, dass Subversion so etwas nicht eingebaut zu haben scheint.Antworten:
Sie können wie folgt rekursiv zurückkehren:
svn revert --recursive .
Es gibt keine Möglichkeit (ohne ein kreatives Skript zu schreiben), Dinge zu entfernen, die nicht der Quellcodeverwaltung unterliegen. Ich denke, das Beste, was Sie tun können, ist, alle Dateien zu durchlaufen, das Ergebnis von zu verwenden
svn list
und dann zu grepen. Wenn das grep fehlschlägt, löschen Sie es.BEARBEITEN : Die Lösung für das Creative-Skript ist hier: Entfernen Sie nicht konvertierte Subversion-Dateien automatisch
Sie können also ein Skript erstellen, das eine
revert
mit der Antwort in der verknüpften Frage kombiniert , die am besten zu Ihnen passt.quelle
svn cleanup
zuerst auf dem WC ausgeführt werden. Dies ist meine Standardpraxis zum Aufräumen nach abgebrochenen Zusammenführungen und so weiter.Verfolgte Dateien zurücksetzen
So bereinigen Sie nicht verfolgte Dateien
Das
-rf
mag / sollte zuerst beängstigend aussehen, aber wenn man es einmal verstanden hat, wird es aus folgenden Gründen nicht mehr sein:rm
-rf
ist erforderlich, sonst werden diese Verzeichnisse nicht entferntZurücksetzen dann reinigen (die OP-Frage)
Für gleichbleibende Benutzerfreundlichkeit
Fügen Sie Ihren .bash_aliases einen permanenten Alias hinzu
quelle
awk: fatal: error reading input file '-': Input/output error
?
imawk
Befehl entkommen , sonst stimmte es mit allen Zeilen in der Ausgabe vonsvn status
Löschen Sie alles in Ihrer lokalen Kopie mit:
Und das alles rekursiv mit dem folgenden Befehl zurücksetzen.
Dies ist viel schneller als das Löschen des gesamten Verzeichnisses und das anschließende Auschecken, da die Dateien aus Ihren lokalen SVN-Metadaten wiederhergestellt werden. Es braucht nicht einmal eine Netzwerkverbindung.
quelle
alles zurücksetzen.
für eine einzelne Datei
quelle
Löschen Sie nicht versionierte Dateien und setzen Sie alle Änderungen zurück:
Aus:
quelle
Reine Windows cmd / bat Lösung:
quelle
Das Löschen der Arbeitskopie vom Betriebssystem und das erneute Auschecken ist am einfachsten, aber offensichtlich kein einziger Befehl.
quelle
Sehr schnell und einfach und macht genau das, was Sie wollen
Die /(config|.ini)/ ist für meine eigenen Zwecke.
Und möglicherweise ist es eine gute Idee, dem Befehl svn --no-ignore hinzuzufügen
quelle
So entfernen Sie nicht verfolgte Dateien
Ich konnte alle nicht verfolgten Dateien auflisten, die von
svn st
in bash gemeldet wurden, indem ich Folgendes tat:Wenn Sie Glück fühlen, könnten Sie ersetzen
echo
mitrm
zu löschen untracked Dateien. Oder kopieren Sie die Dateien, die Sie löschen möchten, von Hand, wenn Sie weniger Glück haben.(Ich habe die Antwort von @ abe-voelker verwendet, um die verbleibenden Dateien zurückzusetzen: https://stackoverflow.com/a/6204601/1695680 )
quelle