web-dev-qa-db-fra.com

Modifier l'URL du référentiel SVN

Ma structure actuelle de SVN:

Path: .
URL: svn://someaddress.com.tr/project
Repository Root: svn://someaddress.com.tr
Repository UUID: -------------------------------------
Revision: 10297
Node Kind: directory
Schedule: normal
Last Changed Author: ----
Last Changed Rev: 9812
Last Changed Date: 2010-12-20 17:38:48 +0100 (Mon, 20 Dec 2010)

Mais notre projet (d'où le service SVN) fonctionnera sur sub.someaddress.com.tr au lieu de someaddress.com.tr (someaddress.com.tr sera bientôt redirigé vers un autre endroit).

Comme il s’agit du serveur de développement, je ne savais pas trop quoi faire. Devrai-je utiliser svn switch ou svn switch --relocate? De plus, devrai-je passer à svn root someaddress.com.tr ou à la branche de projet someaddress.com.tr/project?

101
FallenAngel

Étant donné que le serveur Apache Subversion sera déplacé vers ce nouvel alias DNS: _sub.someaddress.com.tr_:

  • Avec Subversion 1.7 ou supérieur, utilisez svn relocate . Relocaliser est utilisé lorsque l'emplacement du serveur SVN change. switch n'est utilisé que si vous souhaitez remplacer votre copie de travail locale par une autre branche ou un autre chemin. Si vous utilisez TortoiseSVN, vous pouvez suivre les instructions du Manuel TortoiseSVN . Si vous utilisez l'interface de ligne de commande SVN, reportez-vous à la section cette section de la documentation de SVN . La commande devrait ressembler à ceci:

    _svn relocate svn://sub.someaddress.com.tr/project_

  • Continuez à utiliser _/project_ étant donné que le contenu réel de votre référentiel ne changera probablement pas.

Remarque: _svn relocate_ n'est pas disponible avant la version 1.7 (merci à ColinM pour l'info). Dans les anciennes versions, vous utiliseriez:

_    svn switch --relocate OLD NEW
_
183
Juanal

En masquant l'URL avant et après, vous aurez l'esprit tranquille:

svn info | grep URL

  URL: svn://svnrepo.rz.mycompany.org/repos/trunk/DataPortal
  Relative URL: (...doesn't matter...)

Et vérifier sur votre version (à être> 1.7) pour vous assurer que svn relocate est la bonne chose à utiliser:

svn --version

Enfin, en ajoutant à ce qui précède, si la modification de l’URL de votre référentiel implique également un changement de protocole, vous devrez peut-être indiquer l’avant et après l’URL (aussi voir ici )

svn relocate svn://svnrepo.rz.mycompany.org/repos/trunk/DataPortal
    https://svngate.mycompany.org/svn/repos/trunk/DataPortal

Tout cela en une seule ligne de cours. Par la suite, obtenez le sentiment que tout s'est bien passé:

svn info | grep URL:

Si vous en avez envie, un peu plus d'assurance, la nouvelle URL svn repo est connectée et fonctionne:

svn status --show-updates
svn diff
7
Frank Nocke

Dans mon cas, la commande svn relocate (ainsi que svn switch --relocate) a échoué pour une raison quelconque (le référentiel n’a peut-être pas été déplacé correctement ou autre chose). J'ai fait face à cette erreur:

$ svn relocate NEW_SERVER
svn: E195009: The repository at 'NEW_SERVER' has uuid 'e7500204-160a-403c-b4b6-6bc4f25883ea', but the WC has '3a8c444c-5998-40fb-8cb3-409b74712e46'

Je ne voulais pas retélécharger tout le référentiel, alors j'ai trouvé une solution de contournement. Cela a fonctionné dans mon cas, mais en général, je peux imaginer que beaucoup de choses peuvent se briser (donc sauvegardez votre copie de travail ou soyez prêt à re-commander tout le dépôt en cas de problème).

L'adresse de référentiel et son UUID sont enregistrés dans le fichier de base de données .svn/wc.db SQLite dans votre copie de travail. Ouvrez simplement la base de données (par exemple, dans le navigateur SQLite), parcourez la table REPOSITORY et remplacez les valeurs de colonne root et uuid par les nouvelles. Vous pouvez trouver l'UUID du nouveau référentiel en lançant svn info NEW_SERVER.

Encore une fois, traitez cela comme une méthode de dernier recours.

5
Martin Pecka

Si vous souhaitez vous engager dans un nouveau référentiel vide, vous pouvez extraire le nouveau référentiel vide et le valider dans un nouveau référentiel distant.
Un nouveau repo vide ne supprimera pas vos fichiers locaux.
essayez ceci: par exemple, url de dépôt distant: https://example.com/SVNTestcd [YOUR PROJECT PATH] rm -rf .svn svn co https://example.com/SVNTest ../[YOUR PROJECT DIR NAME] svn add ./* svn ci -m"changed repo url"

1
leo.tan