Quand j'essaie svn mv old_file_name new_file_name
, je reçois
svn: Path 'new_file_name' is not a directory
Quelle est la bonne façon? (désolé, cela semble si trivial, mais je suis coincé).
PS. en utilisant svn version 1.6.11
EDITil semble que je reçoive cette erreur uniquement si new_file_name
fait référence au nom d'un fichier actuellement sous contrôle de version. Dans ce cas, bien sûr, je peux simplement
mv old_file_name new_file_name
svn delete old_file_name
Le comportement diffère selon que le nom du fichier cible existe déjà ou non. C'est généralement un mécanisme de sécurité, et il y a au moins 3 cas différents:
Dans ce cas, svn mv
devrait fonctionner comme suit:
$ 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...
Dans ce cas, le fichier cible doit être supprimé explicitement avant que le fichier source puisse être renommé. Cela peut être fait dans la même transaction comme suit:
$ 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...
Dans la sortie de svn stat
, la variable R
indique que le fichier a été remplacé et que le fichier a un historique.
Dans ce cas, le contenu du fichier local serait perdu. Si cela vous convient, vous pouvez supprimer le fichier localement avant de renommer le fichier existant.
$ 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...
Utiliser TortoiseSVN fonctionnait facilement sous Windows pour moi.
Clic droit sur le fichier -> menu TortoiseSVN -> Repo-browser -> clic droit sur le fichier dans le référentiel -> renommer -> appuyer sur Entrée -> cliquer sur Ok
Utilisation de SVN 1.8.8 TortoiseSVN version 1.8.5
Ce message apparaît si vous utilisez un système de fichiers ne respectant pas la casse (par exemple sur un Mac) et que vous essayez de mettre le nom en majuscule (ou un autre changement de casse) . , mannequin, nom:
svn mv file-name file-name_
svn mv file-name_ FILE_Name
svn commit
Cela peut être le cas si vous avez créé un nouveau répertoire sur le disque AVANT de le créer/le valider dans le SVN. Tout ce dont vous avez besoin est simplement de le créer dans SVN et de le déplacer après:
$ 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