¿Cómo se diferencian Git LFS y git-annex?

git-annex ha existido por bastante time, pero nunca ganó impulso.
Git LFS es bastante joven y ya es compatible con GitHub, Bitbucket y GitLab.

Ambas herramientas manejan files binarys en repositorys git. Por otro lado, GitLab parece haber reemplazado a git-annex con Git LFS dentro de un año.

  • ¿Cuáles son las diferencias técnicas?
  • ¿Solucionan el mismo problema?

Ellos resuelven el mismo problema.

Permítanme comenzar con pro / con, luego pasaré a las diferencias técnicas.

git-annex

Pros:

  • Admite múltiples controles remotos que puede almacenar los binarys.
  • Se puede usar sin la ayuda del proveedor de hosting (para más detalles ver aquí ).

Contras:

  • Soporte de Windows en beta, y ha sido durante mucho time
  • Los usuarios necesitan aprender commands separados para el trabajo diario
  • no soportado por github y bitbucket

git-lfs

Pros:

  • Compatible con github, bitbucket y gitlab
  • La mayoría compatible en todos los sistemas operativos
  • Fácil de usar.
  • automatizado basado en filters

Contras:

Técnico

git-annex

git-annex funciona al crear un enlace simbólico en su repository que se compromete. Los datos reales se almacenan en un backend separado (S3, rsync y MUCHOS otros). Está escrito en haskell. Dado que utiliza enlaces simbólicos, los usuarios de Windows se ven obligados a utilizar el anexo de una manera muy diferente, lo que hace que la curva de aprendizaje sea más alta.

git-lfs

Los files del puntero están escritos. Una api git-lfs se usa para escribir los BLOB en lfs. Se requiere un server LFS especial debido a esto. Git lfs usa filters, por lo que solo tiene que configurar lfs una vez, y nuevamente cuando desee especificar qué types de files desea enviar a lfs.

Una gran ventaja del anexo de git es que puedes elegir qué file deseas download.

Todavía sabe qué files están disponibles gracias a los enlaces simbólicos.

Por ejemplo, supongamos que tiene un directory lleno de files ISO. Puede enumerar los files y luego decidir cuál desea download escribiendo: git annex get my_file.

Otra ventaja es que los files no están duplicates en el process de pago. Con LFS, los files lfs están presentes como objects git tanto en .git / lfs / objects como en su repository de trabajo. Entonces, si tiene 20 GB de files LFS, necesita 40 GB en su disco. Mientras que con el anexo de git, los files se enlazan simbólicamente, por lo que en este caso solo se requieren 20 GB.