web-dev-qa-db-fra.com

En quoi Git LFS et git-annex diffèrent-ils?

git-annex existe depuis un certain temps, mais n'a jamais vraiment pris de l'ampleur.
Git LFS est plutôt jeune et est déjà pris en charge par GitHub, Bitbucket et GitLab.

Les deux outils gèrent les fichiers binaires dans les référentiels git. D'un autre côté, GitLab semble avoir remplacé git-annex par Git LFS en un an.

  • Quelles sont les différences techniques?
  • Résolvent-ils le même problème?
42
Stefanus

Ils résolvent le même problème.

Permettez-moi de commencer par le pour/le contre, puis je passerai aux différences techniques.

git-annex

Avantages:

  • Prend en charge plusieurs télécommandes que vous pouvez stocker les fichiers binaires.
  • Peut être utilisé sans le support du fournisseur d'hébergement (pour plus de détails, voir ici ).

Les inconvénients:

  • Prise en charge de Windows en version bêta, et ce depuis longtemps
  • Les utilisateurs doivent apprendre des commandes distinctes pour le travail quotidien
  • non pris en charge par github et bitbucket

git-lfs

Avantages:

  • Pris en charge par github, bitbucket et gitlab
  • Le plus pris en charge sur tous les systèmes d'exploitation
  • Facile à utiliser.
  • automatisé basé sur des filtres

Les inconvénients:

  • Nécessite une implémentation de serveur personnalisée pour fonctionner. Une simple télécommande ssh n'est pas suffisante. Le serveur de référence est en cours de développement https://github.com/git-lfs/lfs-test-server .

Technique

git-annex

git-annex fonctionne en créant un lien symbolique dans votre référentiel qui est validé. Les données réelles sont stockées dans un backend séparé (S3, rsync et BEAUCOUP d'autres). Il est écrit en haskell. Puisqu'il utilise des liens symboliques, les utilisateurs de Windows sont obligés d'utiliser l'annexe d'une manière très différente, ce qui rend la courbe d'apprentissage plus élevée.

git-lfs

Les fichiers de pointeur sont écrits. Une API git-lfs est utilisée pour écrire les BLOBs dans lfs. Un serveur LFS spécial est requis pour cette raison. Git lfs utilise des filtres, vous n'avez donc à configurer lfs qu'une seule fois, et à nouveau lorsque vous souhaitez spécifier les types de fichiers que vous souhaitez envoyer à lfs.

54
grepsedawk

Un avantage majeur de git annex est que vous pouvez choisir le fichier que vous souhaitez télécharger.

Vous savez toujours quels fichiers sont disponibles grâce aux liens symboliques.

Par exemple, supposons que vous ayez un répertoire plein de fichiers ISO. Vous pouvez lister les fichiers, puis décider lequel vous souhaitez télécharger en tapant: git annex get my_file.

Un autre avantage est que les fichiers ne sont pas dupliqués lors de votre paiement. Avec LFS, les fichiers lfs sont présents en tant qu'objets git à la fois dans .git/lfs/objects et dans votre référentiel de travail. Donc, si vous avez 20 Go de fichiers LFS, vous avez besoin de 40 Go sur votre disque. Avec git annex, les fichiers sont liés par un lien symbolique, dans ce cas, seulement 20 Go sont requis.

26
Karl Forner