subversion - svn comandos
¿Cómo sincronizar dos repositorios de Subversion? (7)
Mi empresa tiene una subsidiaria con una conexión a Internet lenta. Nuestros desarrolladores allí sufren para interactuar con nuestro servidor central de 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.
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.
Deberías probar svk
svk es un sistema de control de versiones descentralizado construido con el robusto sistema de archivos 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 el uso de SVK para sincronizar repositorios SVN
Es posible pero no necesariamente simple: el problema que está tratando de resolver está peligrosamente cerca de establecer un entorno de desarrollo distribuido que no es exactamente para lo que SVN está diseñado.
El espejo SVN
Puede usar svn mirror
como se explica en la documentación del libro SVN para crear un espejo de solo lectura de su repositorio principal. Sus desarrolladores interactúan con el espejo más cercano a ellos. Sin embargo, los usuarios del repositorio esclavo tendrán que usar
svn switch --relocate master_url
antes de que puedan comprometerse y deberán recordar volver a ubicarse en el esclavo una vez que hayan terminado. 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 de duplicar el depósito de uuid - vea la documentación de SVN ).
[Editar - Comprobando la documentación de TortoiseSVN parece que puede hacer que TortoiseSVN ejecute scripts de gancho en el lado del cliente . Es posible que pueda crear un script de confirmación pre / post en este punto. O eso o intenta ver si puedes usar la interfaz de automatización de TortoiseSVN para hacerlo].
El camino SVK
svk es un conjunto de scripts de Perl que emulan un servicio de duplicación distribuido sobre 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.
La forma de git-svn
Si bien nunca lo usé yo mismo, también podría hacer que los desarrolladores distantes usen git localmente y usar el gateway git-svn para la sincronización.
Ultimas palabras
Todo depende de su entorno de desarrollo y del nivel de integración que requiera. Dependiendo de su IDE (y si puede cambiar SCM ) es posible que desee echarle un vistazo a otros SCM completamente distribuidos (piense en Mercurial / Bazaar / Git / ...) que soportan el desarrollo distribuido de la caja.
Existe una solución comercial que proporciona una verdadera replicación activo-activo (no maestro-esclavo) de repositorios de Subversion si necesita rendimiento y seguridad de datos más allá de lo que proporciona svnsync llamado "Subversion MultiSite".
Descargo de responsabilidad: yo trabajo para la compañía que hace esta solución
La replicación de repositorio de múltiples sitios de VisualSVN se diseñó para este caso.
Puede mantener el repositorio principal en su oficina principal y configurar múltiples repositorios de escritura 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ática,
Cada depósito maestro y esclavo es un repositorio de Subversion que se puede escribir desde el punto de vista del usuario,
Funciona de fábrica y se puede configurar en un par de clics mediante la consola VisualSVN Server Manager MMC.
Las herramientas de inotify me funcionan bien, los detalles se mencionan en este sitio web:
http://planet.admon.org/synchronize-subversion-repositories-with-inotify-tools/
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.
Por ejemplo, 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.
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.