Pregunta

Mi empresa tiene una filial con una conexión a Internet lenta. Nuestros desarrolladores sufren de interactuar con nuestro servidor central Subversion . ¿Es posible configurar un esclavo / espejo para ellos? 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 un deber.

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

¿Fue útil?

Solución

Subversion 1.5 introdujo el soporte de proxy cuando usas http para alojar tu repositorio. Los desarrolladores pueden retirar sus copias de trabajo del esclavo. Luego, todas las operaciones de solo lectura (diff, log, update, etc.) utilizarán el esclavo. Al comprometerse, el esclavo pasa de forma transparente todas las operaciones de escritura al maestro.

Otros consejos

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

El modo SVN-mirror

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. Cada uno de sus desarrolladores interactúa con el espejo más cercano a ellos. Sin embargo, los usuarios del repositorio de esclavos tendrán que usar

svn switch --relocate master_url

antes de que puedan comprometerse y tendrán que acordarse de volver a ubicarse en el esclavo una vez que hayan terminado. Esto se puede automatizar usando un script de envoltura alrededor de los comandos de modificación del repositorio en SVN si usa el cliente de línea de comandos. Tenga en cuenta que la operación de reubicación mientras es rápido agrega un poco de sobrecarga. (Y tenga cuidado de duplicar el uuid del repositorio: consulte la documentación de SVN .)

[Editar: al revisar la documentación de TortoiseSVN parece que puede tener TortoiseSVN ejecuta los scripts de enganche del lado del cliente . Es posible que pueda crear un script de confirmación previa / posterior en este momento. O bien, o intente ver si puede utilizar interfaz de automatización TortoiseSVN para hazlo].

La forma SVK

svk es un conjunto de scripts de Perl que emulan un servicio de duplicación distribuida 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. Tendrá que usar el cliente svk para la recolección de cerezas, la fusión y el desarmado. Es factible si puedes entender los conceptos distribuidos.

La manera git-svn

Aunque nunca lo usé yo mismo, también podría hacer que los desarrolladores distantes usen git localmente y usen git -svn puerta de enlace para la sincronización.

Palabras finales

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

Debes probar El sistema de control de versiones SVK

  

SVK es un sistema de control de versiones descentralizado creado con el robusto sistema de archivos Subversion. Es compatible con la creación de reflejo del repositorio, la operación desconectada, la fusión sensible al historial y se integra con otros sistemas de control de versiones, así como con las herramientas populares de combinación visual.

En este enlace hay un texto sobre Uso de SVK para sincronizar repositorios SVN

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 a diferentes continentes. El repositorio principal se encuentra en los EE. UU., Pero si accedo al repositorio desde la UE, obtengo una réplica local que funciona tan bien como el servidor maestro.

Las herramientas de Inotify funcionan bien para mí, los detalles se mencionan en este sitio web:

http://planet.admon.org/synchronize-subversion -repositories-with-inotify-tools /

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

Descargo de responsabilidad: trabajo para la empresa que fabrica esta solución

Replicación de repositorio de múltiples sitios del Servidor VisualSVN fue diseñado para este caso.

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

  

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

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

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

  • Funciona de manera inmediata y se puede configurar en un par de clics a través de la consola MMC de VisualSVN Server Manager.

VisualSVNServerManagerConsoleMultisite

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