2009-06-30 9 views
6

Estoy buscando una manera rápida pero no tan sucia de hacer instantáneas de un grupo de archivos que suman unos 80 conciertos. El problema aquí es que muchos de los archivos tienen alrededor de 1 GB de tamaño.¿Sistema de control de versiones para archivos grandes?

¿Cuál es el mejor sistema de control de versiones gratis para este tipo de cosas?

Sé que ZFS es una opción, pero prefiero intentar algo más primero.

+0

ascii o binario? – Johan

+0

binario, aunque no conozco ningún sistema moderno de control de versiones que tenga algoritmos que distingan entre ascii y binario. Voy a probarlo y publicar mis resultados aquí. –

+0

La confirmación inicial está ocupada, y utilizando el protocolo file: //, subversion está transfiriendo un promedio de 1.5 MB por segundo. Bastante lento. –

Respuesta

6

Subversion manejar sus archivos> 1GB con buen aplomo afable en su mayor parte, pero si hay muchos cambios grandes esperar que la generación de diferenciaciones a tomar un tiempo ...

Subversion Best practices tiene una sección de archivos de gran tamaño:

Una buena característica de Subversion es que, por diseño, no hay límite para el tamaño de los archivos que puede manejar. Los archivos se envían "streamily" en ambas direcciones entre el cliente y el servidor de Subversion, usando una pequeña cantidad constante de memoria en cada lado de la red.

Por supuesto, hay una serie de cuestiones prácticas a considerar. Mientras no hay necesidad de preocuparse acerca de los archivos en el rango de kilobytes de tamaño (por ejemplo archivos típicos de código fuente), que cometen los archivos más grandes pueden tomar una enorme cantidad de tiempo y espacio (por ejemplo, archivos que son decenas o cientos de megabytes grande.)

Para empezar, recuerde que su copia de trabajo de Subversion almacena copias vírgenes de todos los archivos de control de versiones en el .svn/texto-base/ zona. Esto significa que su copia de trabajo ocupa al menos dos veces como mucho espacio en disco como el conjunto de datos original. Más allá de eso, el cliente de Subversion sigue un algoritmo (actualmente no ajustable) para confirmar los archivos :

. Copia el archivo a .svn/tmp/(puede tomar un tiempo, y utiliza temporalmente espacio de disco adicional))

. Realiza una diferencia binaria entre el archivo tmp y la copia prístina , o entre el archivo tmp y un archivo vacío si se ha agregado . (puede tomar mucho tiempo calcular, aunque solo una pequeña cantidad de datos podría enviarse a través de la red)

. Envía el diff al servidor, a continuación, mueve el tmpfile en .svn/texto-base/

Así aunque no hay límite teórico para el tamaño de los archivos, se le necesario tener en cuenta que los archivos muy grandes puede requerir un poco de paciente esperando mientras su cliente se escapa. Puede estar seguro, , que a diferencia de CVS, sus archivos grandes no incapacitarán al servidor ni afectarán a otros usuarios.

+3

Hemos estado utilizando Subversion ahora para este propósito durante aproximadamente dos semanas, y funciona muy bien. Los registros en un conjunto de datos de unos 80 gigas distribuidos en 130,000 archivos demoran aproximadamente 1 hora cada noche para registrarse. Los deltas diarios son 50 megas. El archivo individual más grande en el conjunto de datos es de 800 megas. –

+0

Cosas geniales, Ben. Me alegra que haya encontrado esto útil. –

3

Aunque tal vez quieras probar Monotone, solo échale un vistazo. Es posible que encuentre lo que está buscando con él.

+1

urante la monótona cumbre, intercambiamos unas fotos de 2GB usando monotono, y fue bastante rápido. – lapo

Cuestiones relacionadas