2008-09-27 16 views
57

Mi empresa tiene una filial con una conexión a Internet lenta. Nuestros desarrolladores allí sufren para interactuar con nuestro servidor central Subversion. ¿Es posible configurar un esclavo/espejo para ellos? Interactuarían localmente con el servidor y todas las confirmaciones se sincronizarían automáticamente con el servidor maestro.¿Cómo sincronizar dos repositorios de Subversion?

Esto debería funcionar de la manera más transparente posible para los desarrolladores. La usabilidad es imprescindible.

Por favor, no hay sugerencias para cambiar nuestro sistema de control de versiones.

+0

Soy escéptico de cómo proxy puede mejorar la situación. Es posible que la confirmación demore menos tiempo para el POV del usuario, pero los datos aún tienen que transmitirse al maestro, y esto aún requiere la misma cantidad de ancho de banda de red. Por lo tanto, actualizar el maestro es tan lento, incluso si parece más rápido para el usuario. Debido a este comportamiento asincrónico, el maestro puede comenzar a retrasarse. – aseq

Respuesta

27

Subversion 1.5 introdujo el soporte de proxy cuando está usando http para alojar su repositorio. Los desarrolladores pueden verificar sus copias de trabajo del esclavo. Luego, todas las operaciones de solo lectura (diff, log, update, etc.) usarán el esclavo. Al comprometerse, el esclavo pasa transparentemente todas las operaciones de escritura al maestro.

+1

http://svnbook.red-bean.com/en/1.7/svn.serverconfig.httpd.html#svn.serverconfig.httpd.extra.writethruproxy BTW , Estoy en otro trabajo y ya no uso Subversion. Implementé con éxito la solución de proxy. Argh, no es fácil configurar Apache y Subversion en Windows. El mayor problema fue cuando ocurrió una falla durante la sincronización. La solución era tener un script de tiempo de arranque para la limpieza. Ahora una persona no técnica puede simplemente reiniciar la máquina y todo vuelve a funcionar. – neves

+0

Hubo/hay errores que pueden hacer que svn proxying no funcione (bien). Es la razón por la que aún no lo pude hacer funcionar con mi configuración. Véase, por ejemplo http://subversion.tigris.org/issues/show_bug.cgi?id=3275 http://subversion.tigris.org/issues/show_bug.cgi?id=3445 este último está todavía abierto. – aseq

6

Usted debe tratar The SVK version control system

SVK es un sistema de control de versiones descentralizado construido con el robusto sistema de ficheros de Subversion. Es compatible con la duplicación de repositorio, la operación desconectada, la fusión sensible a la historia y se integra con otros sistemas de control de versiones, así como con las populares herramientas de fusión visual.

En este enlace hay texto sobre Using SVK to Synchronize SVN Repositories

49

Es posible, pero no necesariamente simple: el problema que está tratando de resolver es peligrosamente a la creación de un entorno de desarrollo distribuido, que no es exactamente lo SVN es diseñado para.

La forma SVN-espejo

Puede utilizar svn mirror como se explica en la documentación del libro de SVN para crear una sólo lectura espejo de su repositorio principal. Sus desarrolladores interactúan con el espejo más cercano a ellos. Sin embargo los usuarios del repositorio de esclavos tendrán que utilizar

SVN cambiar master_url --relocate

antes de que puedan cometer y que tendrán que recordar a reubicar de nuevo en el esclavo, una vez que se realizan. Esto podría automatizarse usando un script envoltorio alrededor de los comandos de modificación del repositorio en SVN si usa el cliente de línea de comando. Tenga en cuenta que la operación de reubicación a la vez que rápida agrega un poco de sobrecarga. (Y tenga cuidado para duplicar el repositorio uuid -. Ver the SVN documentation)

[Editar - Comprobación de la documentación TortoiseSVN parece que se puede tener TortoiseSVN execute hook scripts client side. Es posible que pueda crear un script de confirmación pre/post en este punto. O eso o intenta ver si puedes usar el TortoiseSVN automation interface para hacerlo].

La forma SVK

svk es un conjunto de scripts de Perl que emulan un servicio de creación de reflejo distribuidos en SVN. Puede configurarlo para que la rama local (el espejo) sea compartida por varios desarrolladores. Entonces el uso básico para los desarrolladores será completamente transparente. Deberá usar el cliente svk para seleccionar, fusionar y fundir. Es factible si puede entender los conceptos distribuidos.

El git-svn manera

Aunque nunca usado que a mí mismo, también podría tener desarrolladores distantes usan Git local y el uso de la puerta de entrada git-svn para la sincronización.

Palabras finales

Todo depende de su entorno de desarrollo y el nivel de integración que requiere. Dependiendo de su IDE (y si puede cambiar SCM) es posible que desee echar un vistazo a otros SCM totalmente distribuidos (piense en Mercurial/Bazaar/Git/...) que son compatibles con el desarrollo distribuido de la caja.

+0

¿Sería posible crear un script de un cliente TortoiseSVN hacer esto automáticamente reubicar? – neves

+4

Esta respuesta tiene más votos que la elegida. Creo que la solución svnsync es mejor porque las confirmaciones se realizan de forma transparente en el servidor. No es necesario trasladarse. Gran usabilidad. Los usuarios acaban de encontrar un mensaje de error extraño cuando el espejo no está sincronizado por completo. Usualmente solo tienen que esperar un par de minutos y todo está bien. – neves

+0

Enlace al capítulo en la configuración de proxy de escritura simultánea documentación SVN Redbook: –

2

Si uno de los repositorios es completamente de solo lectura, puede usar 'svnsync' para mantenerlo actualizado con el repositorio principal. Esta herramienta se usa a menudo en combinación con el soporte de proxy para crear una configuración de esclavo maestro.

E.g. Apache hace esto para reflejar su repositorio en diferentes continentes. El repositorio principal se encuentra en los EE. UU., Pero si accedo al repositorio de la UE, obtengo un espejo local que funciona tan bien como el servidor maestro.

1

hay una solución comercial que proporciona una verdadera replicación activa-activa (no maestro-esclavo) de los repositorios de Subversion si necesita rendimiento y seguridad de los datos más allá de lo que proporciona svnsync llamado "Subversion MultiSite".

responsabilidad: yo trabajo para la compañía que hace que esta solución de

1

VisualSVN servidor Multisite Repository Replication fue diseñado para este caso.

Puede mantener el repositorio principal en su oficina principal y configurar múltiples repositorios esclarecebles en las ubicaciones remotas.

Esto debería funcionar de la manera más transparente posible para los desarrolladores. La usabilidad es imprescindible.

  • La replicación entre los esclavos y el maestro es transparente y automático,

  • cada repositorio maestro y el esclavo es un repositorio Subversion escritura desde el punto de vista del usuario,

  • Works OUT- de la caja y se puede configurar en un par de clics mediante la consola VisualSVN Server Manager MMC.

VisualSVNServerManagerConsoleMultisite

+4

El producto se ve bien. Olvidó decir que cuesta mil dólares. – neves

+2

Además, tanto espejo como esclavo deben ser servidores Visual SVN. – majkinetor

Cuestiones relacionadas