77 votes

erreur de commutation svn - n'est pas le même référentiel

J'ai récemment déplacé le serveur SVN et j'essaie maintenant de déplacer les copies de travail de mon ordinateur vers le nouveau serveur. Mais je reçois une erreur des plus étranges. Je fais :

svn switch http://99.99.99.new/svn/company/project/trunk/web

mais je reçois

svn: 'http://99.99.99.old/svn/company/project/trunk/web'
is not the same repository as
'http://99.99.99.new/svn/company/project'

le déplacement a été fait avec dump et import ... et le repo Root est sur http://99.99.99.new/svn/company/project

Avez-vous une idée de ce qui pourrait clocher ? Merci beaucoup.

131voto

Steef Points 9308

Essayez d'utiliser

svn switch --relocate http://99.99.99.old/svn/company/project/trunk/web http://99.99.99.new/svn/company/project/trunk/web

Comme l'a noté Sporino dans les commentaires, depuis Subversion 1.7, il y a un fichier séparé de relocate commandement :

svn relocate http://99.99.99.old/svn/company/project/trunk/web http://99.99.99.new/svn/company/project/trunk/web

1 votes

@Steef donc l'url devrait être identique à la précédente sauf qu'elle pointera vers un autre endroit ? Donc par exemple svn switch --relocate .../project1/trunk/SomeDir .../project2/trunk ne marchera pas, n'est-ce pas ? Je dois avoir svn switch --relocate .../project1/trunk/SomeDir .../project2/trunk/SomeDir ?

1 votes

Depuis subversion 1.7 il y a une nouvelle commande appelée relocate pour faire la même chose.

0 votes

@Eugene Relocaliser vers le nouvel "emplacement de base" avec svn switch --relocate http://old.location/svn/project/trunk http://new.location/svn/project/trunk . Il ne doit pas s'agir d'un dépôt existant. Ensuite, utilisez la commande normale de commutation vers votre référentiel svn switch http://new.location/svn/projects/project/trunk .

23voto

Pascal Lindelauf Points 2162

Aussi, dans TortoiseSVN il y a une option "Relocate", que vous devriez utiliser dans des situations comme celles-ci (au lieu de l'option "Switch").

0 votes

d'accord ... mais j'étais sous ubuntu donc cette option n'était pas disponible :)

7voto

GabrieleV Points 948

Ma meilleure façon de faire une relocalisation SVN est la suivante :

svn switch --relocate $(svn info | grep ^URL | cut -f 2 --delim=' ') \
                      new_url_or_repository

De cette façon, en utilisant la bonne vieille url du svn info vous êtes sûr de ne pas vous tromper, ce qui est l'une des erreurs les plus courantes.

Si tout est correct, vous serez invité à fournir les détails d'authentification pour le nouvel emplacement, s'ils sont différents.

Après avoir lancé la commande, assurez-vous de vérifier que le changement a été appliqué en regardant le paramètre URL, en lançant la commande

svn info

Après la relocalisation, mettez à jour votre copie de travail, pour vérifier que tout est correct :

svn update

Mon 2c .

4voto

crashmstr Points 15302

Utilisez le relocate au paramètre de ligne de commande de la switch commandement.

documentation sur les commutateurs svn

Parfois, un administrateur peut changer l'"emplacement de base" de votre référentiel - en d'autres termes, le contenu du référentiel ne change pas, mais l'URL principale utilisée pour atteindre la racine du référentiel change. Par exemple, le nom d'hôte peut changer, ou le schéma de l'URL, ou peut-être simplement le chemin qui mène au référentiel. Plutôt que d'extraire une nouvelle copie de travail, vous pouvez demander à la commande svn switch de "réécrire" le début de toutes les URL dans votre copie de travail. Utilisez la commande --relocate pour effectuer la substitution. Le contenu des fichiers n'est pas modifié, et le référentiel n'est pas contacté. C'est similaire à l'exécution d'un perl script sur votre copie de travail des répertoires .svn/ qui s'exécute s/OldRoot/NewRoot/.

1voto

Peter Parker Points 13770

Vous devez utiliser l'option --relocate :

svn switch --relocate http://99.99.99.new/svn/company/project/trunk/web

voir svnbook pour plus de détails.

0 votes

Merci pour la suggestion, mais comme l'a écrit BastardSaint, vous devez spécifier à la fois l'URL de départ et l'URL d'arrivée.

1 votes

Encore un exemple de la mauvaise conception de l'interface utilisateur qui m'irrite dans subversion et SVK. Il peut y avoir des cas d'utilisation exotiques qui nécessitent de spécifier deux URLs, mais les outils devraient juste prendre la foutue valeur par défaut. Dans SVK, par exemple, je ne devrais pas BESOIN DE pour spécifier la source et la cible de la fusion, mais je le fais.

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