Wenn ich svn mv old_file_name new_file_name
versuche, bekomme ich
svn: Path 'new_file_name' is not a directory
Was ist der richtige Weg? (Sorry, das scheint so unbedeutend, aber ich bin festgefahren).
PS. mit svn version 1.6.11
EDITEs scheint, dass ich diesen Fehler nur bekomme, wenn new_file_name
auf den Namen einer Datei verweist, die derzeit unter Versionskontrolle steht. In diesem Fall kann ich das natürlich einfach
mv old_file_name new_file_name
svn delete old_file_name
Das Verhalten hängt davon ab, ob der Name der Zieldatei bereits existiert oder nicht. Normalerweise handelt es sich um einen Sicherheitsmechanismus, und es gibt mindestens drei verschiedene Fälle:
In diesem Fall sollte svn mv
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...
In diesem Fall muss die Zieldatei explizit entfernt werden, bevor die Quelldatei umbenannt werden kann. Dies kann in derselben Transaktion wie folgt durchgeführt werden:
$ 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
zeigt die R
an, dass die Datei ersetzt wurde und dass die Datei einen Verlauf hat.
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...
Die Verwendung von TortoiseSVN hat für mich problemlos funktioniert.
Rechtsklick-Datei -> TortoiseSVN-Menü -> Repo-Browser -> Rechtsklick-Datei im Repository -> Umbenennen -> drücken Sie die Eingabetaste -> klicken Sie auf OK
Verwendung von SVN 1.8.8. TortoiseSVN Version 1.8.5
Diese Meldung wird angezeigt, wenn Sie ein Dateisystem ohne Berücksichtigung der Groß- und Kleinschreibung verwenden (z. B. auf einem Mac) und Sie versuchen, den Namen (oder eine andere Falländerung) groß zu setzen , Dummy, Name:
svn mv file-name file-name_
svn mv file-name_ FILE_Name
svn commit
Es kann sein, dass Sie ein neues Verzeichnis auf der Festplatte erstellt haben, BEVOR Sie es im SVN erstellen/festlegen. Alles, was Sie brauchen, ist es einfach in SVN zu erstellen und danach zu verschieben:
$ svn mv etc/nagios/hosts/us0101/cs/us0101ccs001.cfg etc/nagios/hosts/us0101/ccs/
svn: E155010: Path '/home/dyr/svn/nagioscore/etc/nagios/hosts/us0101/ccs' is not a directory
$ svn status
? etc/nagios/hosts/us0101/ccs
$ rm -rvf etc/nagios/hosts/us0101/ccs
removed directory 'etc/nagios/hosts/us0101/ccs'
$ svn mkdir etc/nagios/hosts/us0101/ccs
A etc/nagios/hosts/us0101/ccs
$ svn move etc/nagios/hosts/us0101/cs/us0101ccs001.cfg etc/nagios/hosts/us0101/ccs/us0101accs001.cfg
A etc/nagios/hosts/us0101/ccs/us0101accs001.cfg
D etc/nagios/hosts/us0101/cs/us0101ccs001.cfg
$ svn status
A etc/nagios/hosts/us0101/ccs
A + etc/nagios/hosts/us0101/ccs/us0101accs001.cfg
> moved from etc/nagios/hosts/us0101/cs/us0101ccs001.cfg
D etc/nagios/hosts/us0101/cs/us0101ccs001.cfg
> moved to etc/nagios/hosts/us0101/ccs/us0101accs001.cfg