Pregunta

Tenemos un gran repositorio SVN.Haciendo SVN actualizaciones están tomando más y más tiempo más vamos a agregar el código.Hemos añadido svn:externals a las carpetas que se repite en algunos proyectos como el FCKeditor en varios sitios web.Esto ayudó, pero no demasiado.

¿Cuál es la mejor manera de reducir el tiempo de actualización y aumentar SVN velocidad?

¿Fue útil?

Solución

Si es un antiguo repositorio SVN (o incluso bastante nuevo, pero no era el programa de instalación de forma óptima), tal vez con el antiguo BDB estilo de la base de datos del repositorio. http://svn.apache.org/repos/asf/subversion/trunk/notes/fsfs tiene notas en la nueva.Para cambiar de uno a otro isn;t demasiado duro - volcado de toda la historia, re-inicializar con el nuevo svn formato de sistema de archivos y volver a importar.También puede ser de utilidad en el mismo tiempo para el filtro de la repo de volcado para quitar todo el confirmaciones de información inútil (yo, por ejemplo, han eliminado los 20 mb+ archivo tar archivos que alguien había registrado).

Tan lejos como en general la velocidad va - calidad (speedy) la unidad de disco duro y la memoria adicional para el sistema operativo basado en el almacenamiento en caché sería difícil de falla en términos de aumento de la velocidad de cómo SVN de trabajo.

En el lado del cliente, si usted tiene tortoisesvn la instalación a través de PuttyAgent para el acceso SSH a un repositorio externo de la máquina, también puede habilitar el SSH de compresión, que también pueden ayudar.

Editar: SVN v1.5 también tiene la fsfs-reshard.py herramienta que puede ayudar a dividir un FSFS basado repositorio svn en un número de directorios - que por sí mismos pueden ser vinculados en diferente unidad de husillos.Si usted tiene miles de revisiones, que también puede ayudar - si por ninguna otra razón que encontrar un archivo de entre los miles necesita tiempo (y de informar a saber si eso es un problema buscando en el IOwait veces)

Otros consejos

Deshabilitar la comprobación de virus en las carpetas que contienen copia de trabajo código.Esto provocó que mis actualizaciones para convertirse en el doble de rápido.

No es realmente una respuesta, pero puede ser interesante saber que una de las razones svn es tan I/O-pesado es el hecho de que almacena una copia de cada archivo en el .svn/texto-directorio de base.Esto hace de local diff operaciones rápidas, pero se come un montón de espacio de disco duro y de I/O.

http://subversion.tigris.org/issues/show_bug.cgi?id=525 tiene los detalles.

Suena como que tienes varios proyectos en un solo repositorio.Dividirlas cuando proceda le dará un gran impulso.

Supuestamente Git es mucho más rápido que la Subversión debido a la manera en la que almacena/procesos de cambios, pero no tengo experiencia de primera mano con ella.

Asegúrese de que la conexión al servidor es una rápida como puede ser (gigabit ethernet).Asegúrese de que el servidor ha rápida de los discos en una matriz.Y, por supuesto, sólo echa un vistazo a lo que usted necesita.

Hay algunos ajustes de rendimiento.SVN es muy pesadas de e/S, de modo más rápido que los discos duros tienen una opción (en ambos extremos).Agregar más memoria a tu servidor.Asegúrese de que sus clientes tienen un desfragmentado de disco duro (para Windows).

¿Qué método de acceso que utilice también es importante.Repositorios almacenados en sistemas de ficheros remotos (mediante file:/// acceso) van a ser mucho más lento que el svnserve o Apache con mod_svn.Considere el uso de uno de los últimos, si usted tiene el repositorio en un simple recurso compartido de archivos.

TotoiseSVN por defecto se ve en el archivo de cambios en el fondo y he visto que reducir la velocidad de mi máquina.He cambiado la configuración para excluir todo y, a continuación, incluir sólo los directorios donde tengo las cajas.También puede desactivar la verificación de antecedentes.Ambas opciones están en las Superposiciones de iconos de configuración del nodo.

A veces lento svn operación, especialmente con muchos factores externos, está relacionado con DNS.Parece svn realiza la búsqueda de DNS por cada svn:externo, incluso para las relativas.La adición de su servidor svn nombre de host en /etc/hosts o la fijación de resolv.conf puede ser útil.

Yo me he encontrado en mi propia experiencia (es decir:no a través de cualquier real las pruebas) que, especialmente si el SVN repo servidor es remoto, el uso de elementos externos parece ralentizar las cosas.Si tienes código duplicado (como el editor FCK) en varios lugares, me gustaría que tienden a pegarse a la utilización de elementos externos puesto que mantener los archivos sincronizados y manejable es más importante que la velocidad de actualización - sin embargo, usted podría mirar en el uso de enlaces simbólicos a traer la duplicación de código en su lugar.(Si está usando Windows XP, puede utilizar los puntos de unión).

Hemos dividido nuestra base de código en varias hermano módulos y escribió la Hormiga secuencias de comandos para que un desarrollador puede trabajar en un módulo en un momento sin preocuparse demasiado acerca de lo que está sucediendo en los otros módulos.

  • un nivel superior de la secuencia de comandos de compilación desencadena todos los módulos de construcción de guiones
  • librerías externas no almacenados en la Subversión sino que se tira desde una unidad de red usando Apache Ivy.(piense en ello como un repositorio de Maven).
  • las dependencias entre los módulos también se gestionan mediante la Hiedra.

Normalmente, los desarrolladores necesitan actualizar su árbol entero un par de veces por semana, pero fácilmente puede ser hecho antes de ir al almuerzo/pausa para el café.

Mediante el acceso de lectura de derechos (es decir,restringir el acceso de lectura a ciertas personas o grupos) se ralentizará el repositorio mucho.Especialmente cuando la autenticación se realiza de una manera especial, por ejemplo,en contra de un dominio de windows.Lo mismo es cierto para el acceso de escritura a los derechos, por supuesto, pero la escritura es menos frecuente después de la lectura.Y restringir el acceso de escritura puede ser más importante que la restricción de acceso de lectura

Si usted tiene muchas carpetas en la raíz del repositorio y su copia local refleja el repositorio, a continuación, intente de hendidura monolítico copia local en muchos separados descargable carpetas y actualización de estas carpetas por separado demasiado, va a ser mucho más rápido que una gran carpeta.

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