2010-11-11 15 views
16

¿Cómo puedo cambiar (reubicar) una URL de subversión que ingresé al crear un repositorio espejo usando "svnsync init" (ejemplo de #https: // lo que sea svn: // lo que sea)?¿Cómo cambiar svn url en svnsync?

trató de correr svnsync init de nuevo con nueva url pero

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

hicieron intenta utilizar svnsync con la nueva URL para su posterior sincronización de. Mi intuición es que debería funcionar. –

+0

intenté volver a llamar a svnsync init con la nueva url pero esto no funciona - svnsync dice que el repositorio espejo está sincronizado con la url "vieja" – sdu

Respuesta

19

La sincronización de URL se almacena como una propiedad de revisión en el repositorio espejo. Si en la máquina con el repositorio espejo (mi situación), utilice el svnlook herramienta para buscar y svnadmin a cambiar:

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

verá la URL de la cesión temporal a la que el espejo está sincronizando actualmente . En el ejemplo anterior, la URL de repositorio principal termina con ... /foo. Es posible que no tenga una nueva línea al final, por lo que su mensaje de shell puede seguir. Ahora necesita ingresarlo en un archivo ya que svnadmin usa un archivo para ingresar para cambiar revprops.

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

Ahora edite t.txt para cambiar la dirección URL para el repositorio maestro. Esto puede hacer que aparezca una nueva línea al final de t.txt y resulte en mensajes de error oscuros/sin sentido de svnsync. Así que deshacerse de él:

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

Tenga en cuenta que ahora tenemos t2.txt que es el archivo desinfectado. A continuación, utilice svnadmin para cambiar la propiedad de revisión de los contenidos del archivo que acaba de editar y desinfectado:

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

Nota se utiliza t2.txt que no t.txt. Por último, comprobar los cambios:

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

debería ver la nueva URL de cesión temporal seguido inmediatamente por el intérprete de comandos, sin salto de línea. En el ejemplo anterior, la URL termina en foo y es seguida inmediatamente por el intérprete de comandos [email protected] [~] $.

+0

He seguido estos pasos y he recibido un error al intentar svnsync sync/repo/path svnsync: UUID del repositorio '72fa8357-5795-f84a-b72d-10573eb4d6c2' no coincide con el UUID esperado 'a3f6904a-36ca-4011-b160-aab731c98da0' – popalka

+2

modifique el archivo db \ revprops \ 0 \ 0 y cambie svn: sync-from- uuid propiedad. ahora todo está bien – popalka

13

Si utiliza la cuenta que utilice para ejecutar svnsync con sólo tiene que utilizar:

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

Si ha seguido las instrucciones del manual y añadió un gancho pre-rev-puntales que niega todos, pero el svnsync usuario para cambiar los puntales de revolución esto debería funcionar.

0

Svnsync almacena el URL del repositorio remoto en las propiedades de revisión de la primera revisión del espejo del repositorio. Por lo tanto, se puede view la URL del repositorio configurado actualmente en tu réplica de la siguiente manera:

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

Eso significa que para cambiar la URL del repositorio remoto sólo hay que change the revision property.Por ejemplo:

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

Ejemplo de salida:

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