2008-10-06 10 views
6

Soy un gran fanático de la subversión y estoy a punto de asumir el control de un sitio grande (200mb aprox.) ¡He recortado el sitio principal desde un tamaño original de 500MB!usando la subversión con un sitio muy grande

Estoy a punto de verificar este sitio en un nuevo repositorio de subversión. El problema es que mi repositorio de subversión está alojado de forma remota para que otro colega también puede trabajar en el sitio.

Me preocupa tener que registrar y retirar 200MB cada vez que tengo que hacer actualizaciones en el sitio.

El desarrollo es bastante activo, por lo que habrá muchas cosas que cambian de forma continua.

Suponiendo que todo se compruebe correctamente, ¿asegurará la subversión que solo se descarguen los archivos/carpetas nuevos/enmendados cada vez que realizo una nueva comprobación o esperaré 200 MB para descargarlos todo el tiempo?

Respuesta

12

A menos que me equivoque después del primer check in/out solo maneja los archivos .diff por lo que solo tiene que descargar/cargar los cambios (no el archivo completo solo las líneas que han sido modificadas mientras el archivo esté ASCII) que existe entre los archivos en el cliente/servidor.

Sin embargo, el primer comit/update será horrendo.

+0

200mb no debería ser demasiado malo para la confirmación inicial, siempre que tenga una conexión a Internet razonable. Tienes razón, svn solo enviará los cambios a partir de ese momento. – Ferruccio

+0

Para la mayoría de las conexiones residenciales que son medio dúplex, subir esa cantidad hará que su conexión sea casi inútil hasta que termine. –

+0

@Chad: Tengo que estar en desacuerdo aquí. No tengo problemas con el cable o DSL. – GEOCHET

0

Si se realizan muchos cambios con frecuencia, ¿por qué no tener una entrada cron que realice una actualización de subversión para mantener su copia local actualizada, digamos cada 6 horas?

De esta forma obtendrá diffs recientes (o ninguno si no se ha actualizado en unas pocas horas) en lugar de todo el shebang.

EDIT: para aclarar, si se producen muchos cambios, pero solo en algunas páginas a la vez, cualquier confirmación/actualización será pequeña; si están siendo hechas para todo/la mayor parte del sitio, a continuación, mantener al día con frecuencia será importante.

0

que sólo enviará los cambios al actualizar o comentario. Deberías estar bien.

0

Subversion solo obtiene diffs/updates, por lo que solo obtendrá el pago completo la primera vez que lo obtenga. Las actualizaciones posteriores solo recibirán cambios.

Para ayudar en las fusiones, podría ser bueno tener dos copias de trabajo, una apuntando a la línea de código principal, una apuntando a su rama de tareas. De esa manera usted no tiene que cambiar su copia de trabajo de una línea de código Subversion a otro - que puede ser costoso, al igual que el registro de salida el código para empezar.

0

Solo descargará los archivos que se hayan tocado entre ese momento. Sin embargo, si usted va a ser de ramificación (como debe ser), entonces usted podría estar esperando mucho tiempo.

¿Cuánto del proyecto se necesita realmente? Dudo que haya 200mb de fuente. Si una gran cantidad de los datos son recursos que cambian con muy poca frecuencia (es decir, imágenes), entonces se podría pensar en la división de los repositorios en proyectos más pequeños.

1

Como dije antes, commit/update solo transfres diffs y es bastante rápido. Los procesos de pago consumen más tiempo: use el interruptor svn para saltar rápidamente entre las ramas.

Además, el protocolo de transporte HTTP/WEBDAV no es muy eficiente, especialmente cuando se trata de muchos archivos pequeños (por ejemplo, el código fuente :)). En su lugar, podría considerar usar svnserve.

200 MB de datos no debería ser demasiado problema para Subversion, pero si el espacio en disco y la transferencia de datos eficiente son realmente un problema, también podría considerar git o mercurial. Especialmente git es mucho más eficiente, pero probablemente necesitarás un poco más de tiempo para familiarizarte con los conceptos de control de fuente distribuida, y por ahora tienes que vivir sin herramientas de GUI de lujo (también las herramientas de línea de comandos se han vuelto mucho más usable últimamente).

Este enlace puede ser interesante, también: Website Auto Update

+0

la eficiencia del protocolo de transporte es un punto muy importante – Jean

1

corro sitios que son totalmente alrededor de 5 GB o más. (y un sistema de compilación que realiza cambios en muchos archivos para cada compilación). Entonces, el delta sería de alrededor de 200MB fácilmente (y para un sitio remoto). SVN lo maneja perfectamente bien. También depende de qué tan bueno puede contener tu apache (si estás usando apache).

5

Otra cosa a tener en cuenta es que se pueden realizar copias de carpetas controladas y que seguirán siendo válidas las copias de trabajo:

svn checkout http://server/path/to/repos my_working_copy 
cp -a my_working_copy another_working_copy 
svn status another_working_copy 

que puede ahorrar mucho tiempo/ancho de banda si necesita múltiples copias de trabajo. También hace ramificación y el cambio mucho más rápido

svn checkout http://server/path/to/trunk my_trunk 
cp -a my_trunk my_branch 
cd my_branch 
svn switch http://server/path/to/branches/stable 

Como se ha señalado en otras respuestas, sólo tendrá que descargar las diferencias entre el tronco y la rama.

Cuestiones relacionadas