web-dev-qa-db-fra.com

Comment renommer un fichier en utilisant svn?

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
72
Walter

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:

Le fichier cible n'existe pas :

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...

Le fichier cible existe déjà dans le référentiel:

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.

Le fichier cible existe déjà localement (non versionné):

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...
96
nosid

Utiliser TortoiseSVN fonctionnait facilement sous Windows pour moi.

http://tortoisesvn.net/

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

14
storm_m2138

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
2
superk

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
0
Dennis Yusupoff