6 votes

svn : moyen propre de remplacer un dossier externe par un dossier local du même nom

J'ai un référentiel vérifié à différents endroits. J'ai un dossier X qui est un externe à un autre référentiel. Je veux que X soit local. Il y a d'autres questions mais elles ne semblent pas avoir rencontré mes difficultés.

Ce que j'ai fait, c'est que j'ai modifié le svn:externals et supprimé cette ligne. Puis j'ai commité le dépôt. Ensuite, j'ai pris le dossier, supprimé tous les .svn dans ce dossier (pour en faire un dossier ordinaire), et svn add l'a fait, puis s'est engagé. Cela a bien fonctionné.

Cependant, lorsque j'ai mis à jour un autre checkout du repo, j'ai rencontré des problèmes. La première erreur était quelque chose comme :

UUID mismatch: existing directory XXX was checked out from a different repository.

Ok, déjà svn up échoue, mais j'essaie de supprimer le dossier et de le remettre à jour. Maintenant, il parvient à récupérer tout le contenu, mais j'obtiens une nouvelle erreur :

Can't remove file XXX: Access is denied

J'essaie à nouveau de mettre à jour, et rien ne se passe. Je supprime un fichier dans ce dossier et je refais la mise à jour à partir de la racine, rien ne se passe. Je supprime le dossier X, et rien ne se passe - il semble donc qu'il l'ait simplement oublié ! Mon seul recours est de supprimer le répertoire racine de X et de le remettre à jour. svn up d'un niveau inférieur (puisque tout ceci se passait également dans un sous-dossier qui était aussi un externe).

Pas bon Je ne veux pas avoir à faire des manipulations manuelles sur tous les sites où ce dépôt est extrait. Que faire ?

3voto

Paulo Fidalgo Points 5207

Ce n'est peut-être pas la solution la plus propre, mais elle fonctionne :

  • Supprimez le dossier externe dans votre copie locale (N'UTILISEZ PAS svn rm folder).
  • Mise à jour avec la version du référentiel

0voto

yvoyer Points 4028

Pas sûr que ça marche, mais ça vaut le coup d'essayer.

Essayez de mettre à jour à la révision où vous avez supprimé les externes, après quoi faites votre mise à jour à la tête.

// XX revision of the externals deletion
svn update -rXX 
// to see if the folder is deleted
svn status
// delete the folder if he is on the local working copy
svn rm folder
// Update to head
svn update

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X