version control - control - ¿Cómo administro adecuadamente los grandes activos artísticos en DVCS?
best version control software (3)
Estos son algunos pensamientos que he tenido sobre este tema. Al final, es posible que deba mantener los activos y el código lo más separados posible. Puedo pensar en varias estrategias posibles:
Distribuido, Dos Repositorios
Activos en un repositorio y código en el otro.
Ventajas
- En el contexto de desarrollo web, no necesitará clonar el repositorio de activos gigantes si no está trabajando directamente con los archivos gráficos. Esto es posible si tiene un servidor web que maneja activos separados del contenido dinámico (PHP, ASP.NET, RoR, etc.) y se sincroniza con el repositorio de activos.
Desventajas
Las herramientas DVCS no rastrean otros repositorios que no son los suyos, por lo que no hay soporte directo de BOM (Lista de materiales), es decir, no hay una forma clara de saber cuándo ambos repositorios están sincronizados. (Supongo que para eso es para git-submodule o repo ).
Ejemplo: el artista agrega una nueva imagen en un repositorio y el programador agrega una función para usar la imagen, sin embargo, cuando alguien tiene que retroceder las versiones, se les obliga a realizar un seguimiento de estos cambios por sí mismos.
La sobrecarga del repositorio de activos, aunque solo afecta a quienes la usan.
Distribuido, un repositorio
Los activos y el código residen en el mismo repositorio, pero están en dos directorios separados.
Ventajas
- La versión del código y los activos se entrelazan, por lo que la lista de materiales es práctica. Retroceder es posible sin muchos problemas.
Desventajas
- Dado que las herramientas de control de versiones distribuidas hacen un seguimiento de toda la estructura del proyecto, por lo general no hay forma de revisar un directorio.
- Todavía tiene el problema con la sobrecarga del repositorio. Más aún, necesita revisar los activos, así como el código.
Las dos estrategias enumeradas anteriormente aún tienen la desventaja de tener una gran sobrecarga ya que necesita clonar el repositorio de activos grandes. Una solución a este problema es una variante de la primera estrategia anterior, dos repositorios; mantenga el código en el repositorio VCS distribuido y los activos en un repositorio VCS centralizado (como SVN, Alienbrain, etc.).
Teniendo en cuenta cómo la mayoría de los diseñadores gráficos trabajan con archivos binarios, generalmente no es necesario bifurcarse a menos que sea realmente necesario (nuevas características que requieren muchos activos que no se necesitan hasta mucho más tarde). La desventaja es que necesitará encontrar una manera de hacer una copia de seguridad del repositorio central. De ahí una tercera estrategia:
Activos fuera del repositorio (o Activos en CMS en su lugar)
Codifique en el repositorio como de costumbre y los activos no están en el repositorio. Los activos se deben colocar en algún tipo de contenido / medios / sistema de gestión de activos, o al menos se encuentran en una carpeta que se respalda regularmente. Esto supone que hay muy poca necesidad de hacer un seguimiento de las versiones con gráficos. Si hay una necesidad de seguimiento, los cambios gráficos son insignificantes.
Ventajas
- No infla el repositorio de código (útil para, por ejemplo, git, ya que con frecuencia verifica archivos)
- Permite el manejo flexible de activos como la implementación de activos en servidores dedicados solo para activos
- Si está en CMS con una API, los activos deben ser relativamente fáciles de manejar en código
Desventajas
- No hay soporte de BOM
- No es fácil el soporte de seguimiento de versiones extensas, esto depende de la estrategia de respaldo para sus activos
¿Hay alguna buena manera de manejar grandes activos (es decir, miles de imágenes, películas flash, etc.) con una herramienta DVCS como hg y git ? Como lo veo, clonar los repositorios que están llenos con activos de 4 GB parece una sobrecarga innecesaria, ya que estará revisando los archivos. Parece bastante engorroso si tiene un código fuente mezclado con archivos de activos.
¿Alguien tiene alguna idea o experiencia al hacer esto en un contexto de desarrollo web?
He luchado con esto yo mismo. Como ha dicho, la creación de versiones de GB de activos puede ser un gran dolor.
Para los proyectos que requieren participación externa, considero que Mercurial es una solución de trabajo , pero no excelente. Se come mucho espacio en los discos para archivos grandes y puede ser bastante lento dependiendo de las circunstancias.
Para mi trabajo de diseño interno, prefiero usar herramientas de sincronización simples (rsync, synctoy, lo que sea) para mantener los directorios actualizados entre servidores / máquinas y luego hacer el control de versiones manualmente. Encuentro que rara vez necesito el control de versiones para cualquier cosa más allá de las revisiones importantes.
Pensamientos, ninguna experiencia: de hecho, separaría el código de los datos. Suponiendo que hay un conjunto de imágenes que pertenece a la aplicación, solo lo mantendría en un servidor centralizado. En el código, luego organizaría (mediante codificación explícita) que la aplicación pueda integrar activos locales o remotos. Las personas que contribuyen pueden luego colocar nuevas imágenes en su tienda local al principio, integrándolas con algún tipo de procedimiento de carga (explícito) en la tienda central cuando sea necesario y aprobado.