¿Cómo puedo acelerar las actualizaciones de SVN?


Tenemos un repositorio SVN bastante grande. Hacer actualizaciones de SVN está tomando más y más tiempo cuanto más añadimos código. Agregamos svn:externals a carpetas que se repitieron en algunos proyectos como el FCKeditor en varios sitios web. Esto ayudó, pero no tanto.

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

Author: Peter Mortensen, 0000-00-00

11 answers

Si es un repositorio SVN más antiguo (o incluso bastante nuevo, pero no se configuró de manera óptima), tal vez use el estilo BDB más antiguo de la base de datos del repositorio. http://svn.apache.org/repos/asf/subversion/trunk/notes/fsfs tiene notas sobre el nuevo. Para cambiar de uno a otro isn; t demasiado duro-volcar todo el historial, volver a inicializarlo con el nuevo formato svn del sistema de archivos y volver a importar. También puede ser útil al mismo tiempo para filtrar el repo-dump para eliminar checkins enteros de inútiles información (yo, por ejemplo, he eliminado 20MB + archivos tarball que alguien había registrado).

En cuanto a la velocidad general, un disco duro de calidad (rápido) y memoria adicional para el almacenamiento en caché basado en el sistema operativo serían difíciles de fallar en términos de aumentar la velocidad de cómo funcionará SVN.

En el lado del cliente, si tiene tortoisesvn configurado a través de PuttyAgent para el acceso SSH a una máquina de repositorio externa, también puede habilitar la compresión SSH, lo que también puede ayudar.

Editar: SVN v1. 5 también tiene el fsfs-reshard.py herramienta que puede ayudar a dividir un repositorio svn basado en FSFS en un número de directorios - que a su vez se pueden vincular a diferentes husillos de unidades. Si tiene miles de revisiones, eso también puede ayudar, si por ninguna otra razón que encontrar un archivo entre miles toma tiempo (y le dice a tell si eso es un problema mirando los tiempos de IOwait)

 14
Author: Alister Bulman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-09 00:00:10

Desactive la comprobación de virus en las carpetas que contienen código de copia de trabajo. Esto hizo que mis actualizaciones se volvieran el doble de rápidas.

 10
Author: Lee Englestone,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-20 04:11:43

No es realmente una respuesta, pero puede ser interesante saber que una de las razones por las que svn es tan pesada en E/S es el hecho de que almacena una copia extra de cada archivo en el .directorio svn / text-base. Esto hace que las operaciones de diff locales sean rápidas, pero consume mucho espacio en el disco duro y E/S.

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

 5
Author: Erik Forsberg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-15 18:07:53

Parece que tienes varios proyectos en un repositorio. Dividirlos donde sea apropiado le dará un gran impulso.

Supuestamente Git es mucho más rápido que Subversion debido a la forma en que almacena/procesa los cambios, pero no tengo experiencia de primera mano con él.

 4
Author: ceejayoz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-15 17:57:04

Asegúrese de que su conexión al servidor sea lo más rápida posible (gigabit ethernet). Asegúrese de que el servidor tiene discos rápidos en una matriz. Y, por supuesto, solo echa un vistazo a lo que necesitas.

 3
Author: WildJoe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-15 18:00:09

Hay algunos ajustes de rendimiento. SVN es muy pesado E/S, por lo que los discos duros más rápidos son una opción (en ambos extremos). Agrega más memoria a tu servidor. Asegúrese de que sus clientes tienen un disco duro desfragmentado (para Windows).

El método de acceso que utilice también importa. Los repositorios almacenados en sistemas de archivos remotos (usando file:/// access) van a ser mucho más lentos que svnserve o Apache con mod_svn. Considere usar uno de estos últimos si tiene el repositorio en un archivo simple compartir.

 3
Author: Yann Ramin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-18 22:03:56

TotoiseSVN por defecto mira los cambios de archivos en segundo plano y he visto que ralentizan mi máquina. Cambié la configuración para excluir todo y luego solo incluir los directorios donde tengo checkouts. También puede desactivar las verificaciones de antecedentes. Ambas configuraciones se encuentran en el nodo Configuración de Superposiciones de iconos.

 2
Author: James A. N. Stauffer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-15 21:33:35

A veces la operación svn lenta, especialmente con muchos externos, está relacionada con DNS. Parece que svn realiza búsquedas DNS por cada svn: externo, incluso para los relativos. Añadiendo su nombre de host del servidor svn a/etc / hosts o arreglando resolv.conf puede ser útil.

 2
Author: Vasily Redkin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-20 08:19:07

He encontrado en mi propia experiencia (es decir: no a través de ninguna prueba real) que, especialmente si el servidor repo SVN es remoto, el uso de externos parece ralentizar las cosas. Si tienes código duplicado (como tu editor FCK) en varios lugares, tendería a seguir usando externos ya que mantener esos archivos sincronizados y manejables es más importante que las velocidades de actualización, aunque podrías usar enlaces simbólicos para traer código duplicado. (Si está utilizando Windows XP, puede utilizar puntos de unión).

 1
Author: nickf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-15 19:12:16

Hemos dividido nuestra base de código en varios módulos hermanos y hemos escrito los scripts Ant para que un desarrollador pueda trabajar en un módulo a la vez sin molestarse demasiado sobre lo que está sucediendo en los otros módulos.

  • un script de compilación de nivel superior activa todos los scripts de compilación de módulos
  • las bibliotecas externas no se almacenan en Subversion, sino que se extraen de una unidad de red utilizando Apache Ivy. (piénsalo como un repositorio Maven interno).
  • dependencias entre los módulos también se gestionan utilizando Ivy.

Normalmente, los desarrolladores tendrán que actualizar todo su árbol un par de veces a la semana, pero se puede hacer fácilmente antes de ir al almuerzo/pausa para el café.

 1
Author: Vladimir,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-15 20:50:12

Usando

 1
Author: ,
Warning: date() expects parameter 2 to be long, string given in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61