Obwohl ich mich irgendwie mit VCS auskenne (regulärer svn-, git- und git-svn-Benutzer), kann ich mich nicht um dieses eigentümliche SVN-Verhalten kümmern.
Wann immer ich ein Verzeichnis in meiner SVN-Arbeitskopie aus einem ansonsten 'sauberen' Zustand umbenennen muss - dh svn status
nichts zurückgeben und alle anderen Änderungen festgeschrieben wurden - wie dies (was das SVN-Dokument vorschlägt):
svn mv foo bar
svn commit
SVN beschwert sich laut:
Adding bar
Adding bar/toto
Deleting foo
svn: Commit failed (details follow):
svn: Item '/test/foo' is out of date
Wie du möchtest:
svn update
Welches gibt:
C foo
At revision 46.
Summary of conflicts:
Tree conflicts: 1
Es gibt einen Baumkonflikt, während keine Änderung durch Dritte stattgefunden hat . Offensichtlich ist der einzige Weg, um aus diesem Baumkonflikt-Chaos herauszukommen, generisch (aus dem roten Buch von svn):
svn resolve --accept working -R .
svn commit
Das Umbenennen im Repo per Fernzugriff und das Aktualisieren meiner Arbeitskopie scheint ziemlich umständlich:
url=$(svn info | grep -e '^URL:' | sed 's/^URL: //') svn mv $url/foo $url/bar
svn update
Gibt es eine sanktionierte, optimierte Möglichkeit, einen fehlenden Ordner umzubenennen? Was ist die Hauptursache für diesen besonders überraschenden Baumkonfliktzustand?