2010-01-25 23 views
5

Tengo un servidor svn en nuestra lengua localmente está en Windows. Los desarrolladores usan y controlan la entrada/salida de eso. Para estar del lado más seguro, hemos tomado un servidor de rackspace a linux one. ¿Es posible hacer una sincronización semanal automática desde el servidor svn local al remoto? El remoto se usará principalmente como una copia de seguridad remota, pero por si acaso alguien quiere acceder, pueden hacerlo ya que no hay IP estática o externa para nuestra LAN.servidor svn sincronizar automáticamente

Respuesta

4

Yo sugeriría utilizar svnsync para esto. Cuando se activa desde el enganche post-commit, esta herramienta (parte de la distribución svn) permite una sincronización en vivo entre 2 (o más) servidores svn.

+0

Si usted va esta dirección (recomendado), asegúrate de leer los errores al desvincularse si falla el enganche post-commit. Es posible que desee ver una sincronización periódica además del enlace posterior a la confirmación. Un ejemplo se puede encontrar aquí http://blogs.atlassian.com/developer/2008/11/subversion_replication_at_atla.html – Dan

0

Siempre que el servidor de respaldo se use como de solo lectura, algo básico como rsync debería funcionar. Pero es posible que desee implementar un ciclo de reintento que continúe sincronizándose hasta que no haya nada que sincronizar, de modo que no sincronice un estado exactamente mientras alguien está cometiendo algo.

Si necesita acceso de lectura/escritura en ambos sitios, puede ser más seguro y más fácil usar algo como git y usar git-svn en el lado del cliente como "compatibilidad hacia atrás".

Otra opción es usar SVK, un sistema de control de versiones distribuidas construido sobre SVK. Pero eso tampoco será completamente transparente para los clientes.

0

Puede usar svnadmin dump para volcar un repositorio completo. Puede utilizar un enlace de compromiso posterior junto con el mismo comando para volcar el compromiso en un formato independiente que puede volverse a aplicar más tarde

Combinando estos y rsync puede replicar efectivamente su servidor en cualquier otro servidor. Siempre que su servidor de respaldo sea accesible solo de forma legible, puede ser utilizado. En el caso de una falla, un simple interruptor svn permitirá a sus desarrolladores usar el servidor de respaldo.

Le recomendaría setup acls para prohibir escribir en el servidor de copia de seguridad a menos que se convierta en el maestro.

Otra solución mencionada por peter podría ser svk, pero no se puede usar para una sincronización automática completa: ¿qué ocurre si se producen cambios conflictivos en ambos servidores? el script fallará o destruirá esto. Cualquier cosa como fusión distribuida debe ser revisada por un humano.

Sin embargo, otra solución sería la SVN --mirror manera

Usted debe tratar de leer todo esto para obtener información más detallada sobre cómo mantener en sincronía repos: How to synchronize two Subversion repositories? :)

Cuestiones relacionadas