Sincronice un repositorio SVN y luego hágalo independiente (copie un repositorio)

Estoy sincronizando un repositorio SVN entre dos sistemas usando svnsync y no estoy 100% seguro de si es posible hacerlo independiente para mis "nuevos usuarios" una vez finalizada la sincronización.

¿Qué debo hacer para convertirla en una entidad completamente independiente? ¿Es suficiente cambiar el archivo passwd?

preguntado el 20 de enero de 11 a las 06:01

2 Respuestas

¿Qué debo hacer para convertirla en una entidad completamente independiente?

El único vínculo entre el nuevo repositorio y el original son una serie de propiedades de revisión que utiliza svnsync synchronize. Puede eliminar de forma segura aquellos como este:

svn propdel --revprop -r 0 svn:sync-from-uuid http://svn.example.com
svn propdel --revprop -r 0 svn:sync-last-merged-rev http://svn.example.com
svn propdel --revprop -r 0 svn:sync-from-url http://svn.example.com

Esto no hace mucho, excepto asegurarse de que svnsync synchronize ya no se puede ejecutar.

editar: Solo pensé en otra cosa. Podrías haber usado svn:externals propiedades en sus proyectos para que apunten a otro repositorio u otra ubicación dentro del mismo repositorio.

Una debemos utilizar el sintaxis de URL relativa para enlaces dentro del mismo repositorio, en cuyo caso no hay problema. Pero si se usó una URL absoluta para eso, dichos enlaces continuarán apuntando al repositorio original después de una svnsync. Puedes inspeccionar todo svn:externals propiedades como esta (puede llevar un tiempo, escanea de forma recursiva todas las carpetas):

svn propget -R svn:externals http://svn.example.com/

Respondido el 21 de enero de 11 a las 14:01

Alguna idea de cómo corregir esos svn:externals propiedades en revisiones existentes, sin embargo? - 0xC0000022L

@STATUS_ACCESS_DENIED: Una forma de simplemente reasignar externos (como en mercurial) para las revisiones existentes falta en SVN. Todavía podría ser posible reescribiendo el historial (svnadmin dump todo el repositorio, buscar y reemplazar URL, luego svnadmin load en un nuevo repositorio), pero ese es un juego de pelota completamente diferente. Nunca lo he intentado. - Wim Coenen

Una buena forma de hacer que svn: externals sea independiente de los cambios en la ubicación del repositorio es usar la referencia "^ / .. / REPO-NAME". Esto significa "cualquiera que sea la ruta principal en la que se encuentre este repositorio, use el REPO-NAME". Entonces, si en el futuro, cambia los hosts, rutas o protocolos de sus repositorios que se vinculan entre sí, continuarán funcionando, antes y después del cambio, hasta que comenzó a usar esta técnica. - macetw

Básicamente, necesita la configuración de apache para:

  • hacer referencia a ese nuevo repositorio con una URL diferente y una AuthName
  • declare su nuevo usuario en el conf/authz archivo de dicho nuevo repositorio.
  • declarando su contraseña (si está usando: q! AuthType Basic modo de autenticación)

Tener una contraseña diferente no es obligatorio: una vez que los dos repositorios se administran con dos direcciones diferentes (bajo el mismo apache o dos 'apache' diferentes), serán independientes entre sí.

Respondido el 20 de enero de 11 a las 10:01

I pensar la fuente está usando la configuración de tipo Apache y en el destino estoy usando svnserve sobre SSH (según svnbook.red-bean.com/en/1.5/…) - siliconpi

@ matt74m: por lo que el mecanismo de autenticación será diferente, las direcciones también. Esos dos repositorios serán bastante independientes (a menos que necesite resincronizarlos de forma regular): VonC

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.