Nuestro proyecto tiene aproximadamente 11 GB, 10 de los cuales son datos binarios (imágenes .png). En consecuencia, una git diff
o las git status
operaciones toman más de un minuto. Afortunadamente, todos los archivos de datos están separados en una carpeta con el maravilloso nombre data
. La tarea es "Evitar comprimir, diferenciar y otras operaciones costosas en archivos binarios".
Se consideró dividir el proyecto en dos repositorios. Entonces
data
sería un repositorio externo, que es verificado por el repositorio de código fuente principal. Se decidió que la sobrecarga de mantener sincronizados los repositorios sería demasiado, especialmente para los artistas que trabajan con los archivos de datos.Explícitamente decirle a git que esos archivos son binarios , se consideraron excluir los archivos de diffs , pero estos parecen ser solo una solución parcial a la pregunta.
Siento que los atributos de git son la solución, pero ¿cómo? ¿O hay una arquitectura mejor que un repositorio monolítico?
Respuestas:
Puede usar git-lfs o herramientas similares (git-fat, git-annex, etc.). Esas herramientas básicamente reemplazan los archivos binarios en su repositorio con un pequeño archivo de texto con hashes y almacenan los datos binarios reales de una manera no git, como un recurso compartido de red.
Hace que diffs y todo sean superrápidos, ya que solo se comparan los hashes, y es, al menos para git-lfs, transparente para el usuario (después de instalar una vez).
Afaik git-lfs es compatible con github, gitlab, VisualStudio y es de código abierto.
fuente
git-lfs
en un proyecto con muchos gigabytes de activos con un equipo mixto de desarrollador / artista? Me interesa saber si las personas están usando git-lfs para proyectos como juegos y animación. Dado que todavía es bastante nuevo al momento de escribir. Según mi propia experiencia, la barrera de entrada a git para usuarios menos técnicos ya es muy alta, por lo que tener una capa adicional para la administración de archivos además de esto, puede ser difícil de usar para las personas a menos que ya se sientan cómodos con git.Utilice los repositorios GIT y SVN
Si los archivos binarios se pueden separar lógicamente de la fuente, puede considerar usar git para archivos de texto y un DVCS como subversión para los archivos binarios.
Un proyecto en el que trabajo hace esto ya que tenemos muchos GB para bibliotecas compiladas (para dependencias OSX / Win32), que necesitamos mantener versionadas.
Por otro lado, si tiene usuarios no técnicos, el uso de dos sistemas de control de versiones puede ser problemático. Sin embargo, si los artistas no están trabajando en el código, puede proporcionar un script para realizar la actualización, y pueden usar la subversión para confirmar los activos binarios.
Usar SVN (con
git svn
)Si bien esta compensación no siempre es tan buena para los desarrolladores que están acostumbrados a usar git regular, puede usar SVN para el repositorio principal, y los desarrolladores pueden usar
git svn
herramientas.Esto hace que sea un poco más trabajo para los desarrolladores que usan git, pero significa para todos los que no están familiarizados con DVCS (o VCS en general): pueden usar el modelo simple de SVN sin tener que usar múltiples sistemas complejos de control de versiones.
git-lfs también es una opción, pero no la usé, así que no puedo hablar de lo bien que funciona.
fuente