usar - tortoise svn server
¿Control de versión para archivos binarios grandes y repositorios de 1TB? (10)
Las ventajas que vienen con un sistema de control de versiones (registro de cambios, acceso rss fácil, etc.) no existen en un recurso compartido de archivos simple.
Si solo se preocupa por las características de los metadatos de la versión y no se preocupa realmente por los datos antiguos, entonces una solución que use un VCS sin almacenar los datos en el VCS puede ser una opción aceptable.
git-annex es el primero que me vino a la mente, pero según la página de git-annex no parece que haya otras alternativas similares pero no exactamente las mismas.
No he usado git-annex, pero a partir de la descripción y el tutorial parece que podría funcionar para su situación.
Lamento volver a abordar este tema, ya que hay many other preguntas relacionadas, pero ninguna que cubra mi problema directamente.
Lo que estoy buscando es un buen sistema de control de versiones que pueda manejar solo dos requisitos simples:
- almacenar archivos binarios grandes (> 1GB)
- soporta un repositorio que es> 1TB (sí, eso es TB)
¿Por qué? Estamos en el proceso de volver a empaquetar unos pocos miles de aplicaciones de software para nuestra próxima gran implementación de SO y queremos que esos paquetes sigan el control de versión.
Hasta ahora tengo algo de experiencia con SVN y CVS, sin embargo, no estoy del todo satisfecho con el rendimiento de ambos con archivos binarios grandes (algunos archivos MSI o CAB serán> 1 GB). Además, no estoy seguro de si se ajustan bien a la cantidad de datos que esperamos en los próximos 2 a 5 años (como dije, estimado> 1TB)
Entonces, ¿tienes alguna recomendación? Actualmente también estoy buscando SVN Externals y Git Submodules, aunque eso significaría varios repositorios individuales para cada paquete de software y no estoy seguro de que eso sea lo que queremos.
- almacenar archivos binarios grandes (> 1GB)
- soporta un repositorio que es> 1TB (sí, eso es TB)
Sí, ese es uno de los casos que Apache Subversion debería admitir en su totalidad.
Hasta ahora tengo algo de experiencia con SVN y CVS, sin embargo, no estoy del todo satisfecho con el rendimiento de ambos con archivos binarios grandes (algunos archivos MSI o CAB serán> 1 GB). Además, no estoy seguro de si se ajustan bien a la cantidad de datos que esperamos en los próximos 2 a 5 años (como dije, estimado> 1TB)
Los servidores y clientes actualizados de Apache Subversion no deberían tener problemas para controlar dicha cantidad de datos y se escalan perfectamente. Además, hay varios enfoques de replicación de repositorios que deberían mejorar el rendimiento en caso de que tenga varios sitios con desarrolladores trabajando en los mismos proyectos.
Actualmente también estoy buscando SVN Externals y Git Submodules, aunque eso significaría varios repositorios individuales para cada paquete de software y no estoy seguro de que eso sea lo que queremos.
svn:externals
no tiene nada que ver con el soporte para grandes binarios o proyectos multiterabyte. Subversion se adapta a la perfección y admite datos muy grandes y una base de código en un solo repositorio. Pero Git no lo hace. Con Git, tendrás que dividir y dividir los proyectos en múltiples repositorios pequeños . Esto va a llevar a muchos inconvenientes y un PITA constante. Es por eso que Git tiene muchos complementos como git-lfs que tratan de hacer que el problema sea menos doloroso.
Actualización de mayo de 2017:
Git, con la adición de GVFS (Git Virtual File System) , puede admitir prácticamente cualquier número de archivos de cualquier tamaño (comenzando con el propio repositorio de Windows: " El repositorio de Git más grande del planeta " (archivos 3.5M, 320GB).
Esto todavía no es> 1TB, pero puede escalar allí.
El trabajo realizado con GVFS se propone lentamente en sentido ascendente (es decir, para Git en sí mismo), pero sigue siendo un trabajo en progreso.
GVFS se implementa en Windows, pero pronto se realizará para Mac (porque el equipo de Windows que desarrolla Office para Mac lo exige) y Linux.
Abril 2015
Git puede ser considerado como un VCS viable para datos grandes, con Git Large File Storage (LFS) (por GitHub, abril de 2015).
git-lfs (ver git-lfs.github.com ) puede probarse con un servidor que lo lfs-test-server : lfs-test-server (o directamente con github.com):
Puede almacenar metadatos solo en el repositorio de git, y el archivo grande en otro lugar.
Cuando realmente tenga que usar un VCS, yo usaría svn, ya que svn no requiere copiar todo el repositorio a la copia de trabajo. Pero aún necesita la cantidad duplicada de espacio en disco, ya que tiene una copia limpia para cada archivo.
Con esta cantidad de datos buscaría un sistema de administración de documentos, o (nivel bajo) usaría un recurso compartido de red de solo lectura con un proceso de entrada definido.
Eche un vistazo a Boar , "Control de versión simple y copia de seguridad de fotos, videos y otros archivos binarios". Puede manejar fácilmente archivos enormes y repositorios enormes.
Esta es una pregunta antigua, pero una posible respuesta es https://www.plasticscm.com/ . Su VCS puede manejar archivos muy grandes y repositorios muy grandes. Fueron mi elección cuando elegimos hace un par de años, pero la gerencia nos empujó a otro lado.
Hay un par de compañías con productos para "Intercambio de archivos de área amplia". Pueden replicar archivos grandes en diferentes ubicaciones, pero tienen mecanismos de bloqueo distribuidos, de modo que solo una persona puede trabajar en cualquiera de las copias. Cuando una persona ingresa una copia actualizada, se replica en los otros sitios. El uso principal es archivos CAD / CAM y otros archivos grandes. Consulte Peer Software (http://www.peersoftware.com/index.aspx) y GlobalSCAPE (http://www.globalscape.com/).
Los sistemas de control de versiones son para código fuente, no para compilaciones binarias. Es mejor que utilice las cintas de copia de seguridad del servidor de archivos de red estándar para la copia de seguridad de archivos binarios, aunque es bastante innecesario cuando tiene control de código fuente, ya que puede reconstruir cualquier versión de cualquier binario en cualquier momento. Tratar de poner los binarios en el control del código fuente es un error.
De lo que realmente está hablando es de un proceso conocido como gestión de configuración. Si tiene miles de paquetes de software únicos, su empresa debe tener un administrador de configuración (una persona, no software ;-)) que administre todas las configuraciones (también conocidas como compilaciones) para desarrollo, prueba, lanzamiento, lanzamiento por cliente, etc. .
Podría estar mucho mejor si confía en algún dispositivo NAS que proporcione una combinación de instantáneas accesibles al sistema de archivos junto con una deduplicación a nivel de almacén / bloque de instancia única, dada la escala de datos que está describiendo ...
(La pregunta también menciona los archivos .cab y .msi: por lo general, el software CI de su elección tiene algún método para archivar las compilaciones . ¿Es eso lo que finalmente busca?)
Pregunta antigua, pero quizás vale la pena señalar que Perforce está en uso en muchas compañías grandes, y en particular en compañías de desarrollo de juegos, donde hay depósitos de varios Terabyte con muchos archivos binarios grandes.
(Descargo de responsabilidad: trabajo en Perforce)