Si je cours svn rm file
, le fichier est supprimé de la copie de travail locale.
Ce que je fais maintenant c'est:
$ cp file file2
$ svn rm file
$ svn ci
$ mv file2 file
Comment puis-je éviter que svn supprime également le fichier local en utilisant svn rm
?
Vous voulez le --keep-local
option de ligne de commande. Cela supprime le fichier du contrôle de version sans le supprimer de votre système de fichiers.
$ svn rm --keep-local my_important_file
Note: Le --keep-local
n'affecte que le svn rm
de votre copie. D'autres utilisateurs peuvent avoir leur propre copie locale du fichier supprimée, sauf en cas de conflit entre leur copie locale et le référentiel en raison de modifications apportées. Cela peut ne pas être le résultat souhaité. Voir les commentaires ci-dessous.
Supprimer un fichier de SVN sans le supprimer localement n’est un problème courant. Un exemple frappant est le fichier .classpath dans un projet Eclipse. Mettre ce fichier de configuration sous SVN est merveilleux tant que toutes les machines utilisées dans le projet ont les mêmes installations Eclipse et Java. Une fois cette condition violée, les commits commencent à casser d’autres projets Eclipse. C’est le vous devez supprimer un fichier de SVN sans le supprimer nulle part.
svn rm --keep-local .classpath
fait le travail parfaitement sur une machine et à ce moment-là.
Le problème est que d'autres machines risquent de perdre ce fichier (lors de la mise à jour) ou de le ressusciter (lors de la validation). Le défaut de SVN est de ne pas manipuler --keep-local
dans le référentiel ni à le propager à d’autres copies de travail. Par conséquent, sur toutes les autres machines ci-dessus, la commande doit être exécutée - mieux avant toute validation ou mise à jour.
Cela fonctionnera bien entendu à 90% au mieux. Les suppressions et les versions révisées se produiront soudainement. Ma solution est d’avoir chaque machine, j’ai un accès direct ou indirect à
svn rm --keep-local .classpath
copy .classpath .classpath-nameOfTheMachine
svn add .classpath-nameOfTheMachine
C’est si carrément moche que l’on n’appelle guère cette "solution". Néanmoins, cela permettait toujours de réparer rapidement les accidents ultérieurs.