2010-11-11 18 views
16

Comment puis-je changer (relocaliser) une URL de subversion que j'ai saisie lors de la création d'un référentiel miroir en utilisant "svnsync init" (exemple de #https: // quoi que ce soit à svn: // quel que soit)?Comment changer svn url dans svnsync?

essayé de courir à nouveau avec svnsync par init nouvelle URL, mais

svnsync init file:///<path_to_mirror> http:///<new_url> 
svnsync: Destination repository is already synchronizing from 'http:///<old_url>' 
+0

avez-vous essayer d'utiliser svnsync avec la nouvelle URL pour la synchronisation ultérieure de. Mon instinct me dit que ça devrait marcher. –

+0

a bien essayé d'appeler à nouveau svnsync init nouvelle URL, mais cela ne fonctionne pas - svnsync dit que le dépôt miroir est synchronisé avec « vieux » url – sdu

Répondre

19

La synchronisation d'URL est stockée en tant que revprop dans le repo de miroir. Si la machine avec le dépôt miroir (ma situation), utilisez l'outil svnlook regarder et svnadmin changer:

[email protected][~]$ svnlook pg --revprop -r0 /path/to/mirror/repo svn:sync-from-url 
svn+ssh://svn.abc.com:1234/svn/[email protected][~]$ 

Vous verrez l'URL du repo auquel votre miroir est actuellement en cours de synchronisation . Dans l'exemple ci-dessus, l'URL maître repo se termine par ... /foo. Il ne peut pas avoir un saut de ligne à la fin, donc votre invite de shell peut suivre. Vous devez maintenant l'inclure dans un fichier car svnadmin utilise un fichier pour modifier les revprops.

[email protected][~]$ svnlook pg --revprop -r0 /path/to/mirror/repo svn:sync-from-url > t.txt 
[email protected][~]$ 

modifier maintenant t.txt changer l'URL du repo maître. Cela peut entraîner l'apparition d'une nouvelle ligne à la fin de t.txt et entraîner des messages d'erreur obscures/dénués de sens de svnsync. Alors se débarrasser de celui-ci:

[email protected][~]$ cat t.txt | tr -d '\n' > t2.txt 

Notez que nous avons maintenant t2.txt qui est le fichier aseptisé. Ensuite, utilisez svnadmin pour changer le revprop au contenu du fichier juste édité et aseptisé:

[email protected][~]$ svnadmin setrevprop /path/to/mirror/repo -r0 svn:sync-from-url t2.txt 
[email protected][~]$ 

Notez que t2.txt est utilisé non t.txt. Enfin, vérifiez vos modifications:

[email protected][~]$ svnlook pg --revprop -r0 /path/to/mirror/repo svn:sync-from-url 
svn+ssh://svn.def.com:5678/svn/[email protected][~]$ 

Vous devriez voir votre nouvelle URL repo immédiatement suivie par l'invite du shell, sans retour à la ligne. Dans l'exemple ci-dessus, l'URL se termine par foo et est immédiatement suivie de l'invite du shell [email protected] [~] $.

+0

j'ai suivi ces étapes et obtenir une erreur lorsque vous essayez synchronisation svnsync/repo/path svnsync: Repository UUID '72fa8357-5795-f84a-b72d-10573eb4d6c2' ne correspond pas attendu UUID 'a3f6904a-36ca-4011-b160-aab731c98da0' – popalka

+2

modifier le fichier db \ revprops \ 0 \ 0 et changer svn: sync-de- uuid propriété. maintenant tout va bien – popalka

13

Si vous utilisez le compte que vous utilisez pour exécuter svnsync vous pouvez simplement utiliser:

svn propset --revprop -r 0 svn:sync-from-url http://my.new/url url://to.my.repo 

Si vous avez suivi les instructions du manuel et a ajouté un crochet pré-rev-accessoires qui nie tout le monde, mais le svnsync l'utilisateur pour changer les accessoires de rev cela devrait fonctionner.

0

Svnsync stocke l'URL du référentiel distant dans les propriétés de révision de la première révision du miroir du référentiel. Ainsi, vous pouvez view l'URL du référentiel actuellement configuré sur votre miroir local comme celui-ci:

$ svn pg --revprop -r0 svn:sync-from-url file:///path/to/svn-mirror 

Cela signifie que pour changer l'URL du référentiel à distance il vous suffit de change the revision property.Par exemple:

$ svn ps --revprop -r0 svn:sync-from-url https://svn.example.org/repo \ 
     file:///path/to/svn-mirror/ 

sortie Exemple:

property 'svn:sync-from-url' set on repository revision 0