Das Verhalten hängt davon ab, ob der Zieldateiname bereits vorhanden ist oder nicht. Es ist normalerweise ein Sicherheitsmechanismus und es gibt mindestens 3 verschiedene Fälle:
Zieldatei nicht existiert :
In diesem Fall svn mv
sollte wie folgt funktionieren:
$ svn mv old_file_name new_file_name
A new_file_name
D old_file_name
$ svn stat
A + new_file_name
> moved from old_file_name
D old_file_name
> moved to new_file_name
$ svn commit
Adding new_file_name
Deleting old_file_name
Committing transaction...
Die Zieldatei ist bereits im Repository vorhanden:
In diesem Fall muss die Zieldatei explizit entfernt werden, bevor die Quelldatei umbenannt werden kann. Dies kann in derselben Transaktion wie folgt erfolgen:
$ svn mv old_file_name new_file_name
svn: E155010: Path 'new_file_name' is not a directory
$ svn rm new_file_name
D new_file_name
$ svn mv old_file_name new_file_name
A new_file_name
D old_file_name
$ svn stat
R + new_file_name
> moved from old_file_name
D old_file_name
> moved to new_file_name
$ svn commit
Replacing new_file_name
Deleting old_file_name
Committing transaction...
In der Ausgabe von svn stat
, derR
anzeigt , dass die Datei ersetzt wurde, und dass die Datei eine Geschichte hat.
Die Zieldatei ist bereits lokal vorhandenZieldatei (nicht versioniert):
In diesem Fall geht der Inhalt der lokalen Datei verloren. Wenn dies in Ordnung ist, kann die Datei lokal entfernt werden, bevor die vorhandene Datei umbenannt wird.
$ svn mv old_file_name new_file_name
svn: E155010: Path 'new_file_name' is not a directory
$ rm new_file_name
$ svn mv old_file_name new_file_name
A new_file_name
D old_file_name
$ svn stat
A + new_file_name
> moved from old_file_name
D old_file_name
> moved to new_file_name
$ svn commit
Adding new_file_name
Deleting old_file_name
Committing transaction...
file://...
odersvn://...
oderhttp://...
in die Datei.