2011-02-05 9 views
6

Hemos estado utilizando un servidor DIY SVN en la oficina desde hace aproximadamente un año. Es una configuración simple con SVN instalado en un servidor doméstico. Usamos tortuga SVN para acceder a ella. Desearía haberme enterado de un sistema de control de versión hace años. De todos modos, el acceso al servidor es perfecto en la oficina en la LAN de 1Gbps, pero afuera es utilizable pero deficiente, limitado por el Velocidad de carga de 50k bytes/seg de nuestra línea ADSL a la web. Supongo que esto puede mejorar algún día con 'infinito', pero podemos morir esperando.¿Puedo crear un repositorio SVN alojado 'paralelo' al mío en mi servidor de oficina?

Me gustaría tener un repositorio "paralelo" alojado, por lo que me doy cuenta que pagaré, donde el acceso es mucho más rápido. Esto también nos daría una copia de seguridad adicional. Mi repositorio está justo por debajo de 40G, por lo que un límite de 100G estaría bien. ¿Hay alguna manera de hacer esto y hacer que los dos sean reflejos tales que los commit (al menos pequeños) sean visibles en ambos casi de forma inmediata? Ya estoy usando el comando Svnbackup para hacer un espejo paralelo en nuestro servidor, ¿puede funcionar de esta manera?

Cualquier sugerencia o alternativa apreciada.

TIA Brian

Respuesta

2

¿Quieres un servidor de sólo lectura, o leer + escribir el acceso a más de un servidor? Cuando solo necesita un espejo de solo lectura, puede usar svnsync para replicar su servidor de oficina en un servidor espejo.

Cuando desee comprometerse desde diferentes lugares, eche un vistazo a una herramienta distribuida como hg + hgsubversion o git-svn, que pueden utilizarse como clientes asincrónicos para svn.

+0

Gracias. Leer-escribir por favor. Mi uso principal del espejo www sería cuando estaba en casa (o fuera de la oficina). –

+1

@Brian No puede configurar (fácilmente) un clúster de servidor svn multi-maestro, ya que el modelo de datos de svn no lo permite. Puede colocar el servidor central en Internet, lo que provoca una pérdida de rendimiento en su oficina. Debe decidir si esta pérdida de rendimiento es aceptable para usted. Una alternativa es usar mercurial o git como cliente svn, ya que estas herramientas le permiten trabajar fuera de línea. Pero el enfoque de DVCS solo funciona cuando no se necesitan funciones como el bloqueo de archivos o la eliminación parcial de árboles. – Rudi

0

El servidor estándar SVN de Linux tiene ganchos que le permiten ejecutar sus propios scripts en eventos. Puede usar el enganche post-commit (simplemente coloque un script llamado "post-commit" en el directorio "hooks").

Ahora puede simplemente emitir una copia rápida de todo el repositorio, que es bastante fácil de instalar (svnadmin hotcopy from to) y copiar el repositorio al otro host en Internet usando ssh o similar. Puedes hacer esto en ambas máquinas y eres bueno.

inconvenientes:

  • Si el depósito es grande, entonces esto toma mucho tiempo
  • Cuidado con la posibilidad de que alguien se compromete en un repositorio y otra persona al otro repositorio de forma simultánea. Esto bien podría corromper todo. Debe asegurarse de que esto no suceda o encontrar una manera de bloquear el repositorio (como apagar SVN durante el proceso de copia)
  • Es necesario el acceso shell para ambas máquinas

Usted puede ser capaz de acelerar las cosas guardando el repositorio en un archivo local y solo transmitiendo diffs a la otra máquina.

1

Lo que creo que realmente necesitas es un proxy esclavo: esta es una copia de un servidor de subversión para acceso de solo lectura, cuando escribes (para ello), las confirmaciones se pasan directamente al maestro. A medida que lee mucho más que escribir, esto proporciona una forma simple pero efectiva de lograr lo que desea.

Hay un montón de tutorials en la web, pero todos requieren que ejecute la subversión utilizando http access (no svnserve). El esclavo se mantiene actualizado a través de la excelente svnsync y un gancho post-commit.

+0

@gbjbaand: Esa es una idea inteligente, gracias. –

Cuestiones relacionadas