Pregunta

Parece un problema simple:

  • Tengo un repositorio SVN dentro de nuestro firewall.
  • Tengo un repositorio SVN fuera de nuestro firewall.
  • Tengo usuarios dentro y fuera del firewall. (No VPN no es una opción :( sería demasiado fácil)
  • las máquinas dentro del firewall PUEDEN hablar con el servidor SVN externo. Pero no al revés.
  • el SVN externo es una cosa temporal, el repositorio principal siempre estará dentro.

Quiero de alguna manera (desde adentro, lo más probable) tomar todos los cambios en uno y aplicarlos al otro. Y viceversa. Suena simple, y asumo que GIT le gusta hacer esto, pero estamos usando SVN.

¿Alguien ha hecho esto? No me importa que sea un proceso manual: solo hay un par de personas externas y no necesitan actualizaciones al minuto, dos o tres veces al día lo harían.

Creo que apache.org hace esto, pero no puedo encontrar documentos sobre CÓMO lo hacen. Hay un par de productos que lo hacen (bueno, uno), pero me encantaría saber si alguien tiene una manera agradable y limpia de hacerlo sin ellos. svnsync hace esto, solo en una dirección (maestro-esclavo)

Feliz de que se ejecute en Windows, Linux o Mac, ya que tenemos todos ellos. Sin embargo, Windows y Mac prefieren.

¡Ayuda! :) :)

[actualizar] después de 12 meses de cometer errores (y no necesitarlo al final), la respuesta correcta es, en mi opinión, correcta. Use git: tenga un repositorio que extraiga de SVN-A, luego presione a un nuevo repositorio de git, luego empuje desde allí a SVN-B. Debería funcionar :)

¿Fue útil?

Solución

Recomiendo SVK o git-svn .

Ambos de estos le permiten crear un espejo externo de su repositorio svn, y permitir que los desarrolladores externos se comprometan directamente con el espejo externo. A continuación, puede extraer y enviar cambios de este espejo externo a su repositorio maestro interno.

git-svn requeriría (creo) que los desarrolladores externos usen git. Lo prefiero, pero me resistiría a insistir en otros.

SVK, sin embargo, permite que los desarrolladores externos sigan usando svn. Dado que el repositorio interno solo es accesible internamente, una cuenta interna o un usuario tendrían que manejar la sincronización periódica (un trabajo cron probablemente funcionaría).

Aquí hay un tutorial extendido en el wiki de SVK: UsingSVKAsARepositoryMirroringSystem

Otros consejos

La simplicidad suele ser la mejor manera, y parece que ya tiene una solución simple: usar el Repositorio SVN fuera del firewall.

Ya ha dicho que las máquinas dentro del firewall pueden alcanzarlo, y obviamente las máquinas externas pueden alcanzarlo ... así que eso es todo el mundo, entonces, ¿qué justificación tiene para un segundo repositorio SVN dentro del firewall? Si es solo una copia de seguridad, entonces una copia de seguridad de la que está en el exterior.

Avísame si me falta parte de tus requisitos.

Otro pensamiento ... si tiene instancias SVN internas y externas ... ¿qué es detenerlos a ambos a la vez que entreguen la misma identificación de la lista de cambios para diferentes propósitos? Si está buscando una solución descentralizada, debería mirar hacia GIT en lugar de SVN.

Una de las características de Enterprise Edition of VisualSVN Server es Multisite Repository Replication que hace exactamente lo que está buscando.

La función se basa en la tecnología VisualSVN Distributed File System (VDFS) que se diseñó para permitir la replicación transparente del repositorio de Subversion en los sitios distribuidos geográficamente. Algunas de las características notables de VDFS:

  • Todos los repositorios de Subversion VDFS distribuidos son grabables,
  • VDFS permite la replicación de datos bidireccional transparente,
  • VDFS admite reglas de autorización de replicación y mecanismos de autenticación avanzados, como la autenticación integrada de Windows (NTLM / Negotiate) con cifrado seguro SSL / TLS.
  • Todos los repositorios VDFS contienen el mismo conjunto de datos,
  • La replicación del repositorio sobre WAN con VDFS es hasta 10 veces más rápida que la replicación basada en el proxy de escritura directa,
  • La configuración de VDFS se realiza a través de una interfaz gráfica sin pasos complicados.

Vale la pena señalar que VDFS sigue el modelo clásico de replicación maestro-esclavo que tiene ventajas significativas sobre el modelo de replicación maestro-maestro porque es más adecuado para replicar los repositorios de Subversion con FSFS backend tipo fs. La tecnología VDFS es mucho más confiable que las soluciones de replicación maestro-maestro para SVN.

Interfaz de configuración de VDFS para repositorios SVN de Apache multisitio

Hmm ... mantener dos reposinaciones sincronizadas entre sí no es trivial, creo. Básicamente implicaría convertir SVN en Mercurial o Git.

La solución más transparente y escalable es la replicación maestro / esclavo usando svnsync que se describe en el libro de Subversion: http://svnbook.red-bean.com/en/1.7/svn-book.html#svn.serverconfig.httpd.extra.writethruproxy

Una cosa que podrías intentar es replicar el repositorio a nivel de archivo. Estoy usando FolderShare ( http://www.foldershare.com : se ejecuta en Windows y Mac) para una similar escenario, aunque lo estoy replicando solo con fines de copia de seguridad y no he intentado conectar usando SVN a la réplica.

http://wandisco.com/subversion/multisite/

  

Apalancamientos Subversion MultiSite   Replicación única de WANdisco   tecnología para sincronizar inmediatamente   Repositorios subversion conectados a través de   una red de área amplia (WAN). Usuarios en   cada ubicación experimenta el área local   rendimiento de velocidad de red (LAN) para   Operaciones de lectura y escritura.   Subversion MultiSite también proporciona   Copia de seguridad en caliente continua y auto-sanación   capacidades que automatizan el desastre   recuperación, por lo que el tiempo de inactividad es   virtualmente eliminado.

Si está buscando una explicación paso a paso sobre la replicación maestro / esclavo usando svnsync, siga http://lasanthals.blogspot.com/2012/09/main-steps-of-configuring-svn_4.html

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top