Comment supprimer un fichier du contrôle de version sans le supprimer?

Si je lance le svn rm file , le fichier est supprimé de la copie de travail locale.

Ce que je fais maintenant est:

 $ cp file file2 $ svn rm file $ svn ci $ mv file2 file 

Comment éviter svn également la suppression du fichier local lors de l’utilisation de svn rm ?

Vous voulez l’option de ligne de commande --keep-local . Cela supprime le fichier du contrôle de version sans le retirer de votre système de fichiers.

 $ svn rm --keep-local my_important_file 

Supprimer un fichier de SVN sans le supprimer localement est un problème courant. Un exemple marquant 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 la même installation Eclipse et Java. Une fois que cette condition a été violée, Commit commence à casser les autres projets Eclipse. C’est le point qu’il faut supprimer d’un fichier SVN sans le supprimer n’importe où.

 svn rm --keep-local .classpath 

fait le travail parfaitement sur une machine et à ce moment-là.

Le problème est que d’autres machines peuvent perdre ce fichier (lors de la mise à jour) ou le ressusciter (lors de la validation). Le défaut de SVN n’est ni de gérer --keep-local dans le référentiel ni de 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, bien sûr, fonctionnera au mieux à 90%. Les suppressions et re-versions auront lieu soudainement. Ma solution est de faire en sorte que chaque machine ait un access direct ou indirect à

 svn rm --keep-local .classpath copy .classpath .classpath-nameOfTheMachine svn add .classpath-nameOfTheMachine 

Ceci est tellement laid que l’on peut difficilement l’appeler une “solution”. Néanmoins, il a toujours été possible de réparer rapidement les accidents ultérieurs.

Je n’ai pas de réponse à cette question précise, mais j’ai une réponse à une question connexe, à savoir comment supprimer tous les fichiers (pas spécifiques) d’un répertoire du contrôle de version sans les supprimer localement. Cette solution provient d’une implémentation de Scientific Linux.

ls -a .svn

devrait afficher le répertoire svn qui stocke les données de contrôle. Simplement:

rm -r .svn

va se débarrasser de ce répertoire. Puis en tapant:

svn status

produira un ‘avertissement: ce répertoire n’est pas une erreur de copie de travail, car il n’est plus sous contrôle de version.

J’espère que ça aide.