git-annex已经存在了很长一段时间,但从未真正获得动力。
Git LFS相当年轻,已经得到 GitHub、Bitbucket 和 GitLab 的支持。
这两个工具都处理 git 存储库中的二进制文件。另一方面,GitLab 似乎在一年内用Git LFS取代了git-annex 。
- 有哪些技术差异?
- 他们解决了同样的问题吗?
git-annex已经存在了很长一段时间,但从未真正获得动力。
Git LFS相当年轻,已经得到 GitHub、Bitbucket 和 GitLab 的支持。
这两个工具都处理 git 存储库中的二进制文件。另一方面,GitLab 似乎在一年内用Git LFS取代了git-annex 。
他们确实解决了同样的问题。
让我从赞成/反对开始,然后我将讨论技术差异。
git-annex 通过在你的 repo 中创建一个被提交的符号链接来工作。实际数据存储到单独的后端(S3、rsync 和许多其他后端)。它是用haskell写的。由于它使用符号链接,Windows 用户被迫以非常不同的方式使用附件,这使得学习曲线更高。
指针文件被写入。git-lfs api 用于将 BLOB 写入 lfs。因此需要一个特殊的 LFS 服务器。Git lfs 使用过滤器,因此您只需设置 lfs 一次,当您想要指定要推送到 lfs 的文件类型时再设置一次。
git附件的一个主要优点是您可以选择要下载的文件。
由于符号链接,您仍然知道哪些文件可用。
例如,假设您有一个充满 ISO 文件的目录。您可以列出文件,然后通过键入以下内容来决定要下载的文件:git annex get my_file.
另一个优点是文件在您的结帐时不会重复。使用 LFS,lfs 文件在 .git/lfs/objects 和您的工作存储库中都以 git 对象的形式存在。因此,如果您有 20 GB 的 LFS 文件,则需要 40 GB 的磁盘空间。使用 git 附件时,文件是符号链接的,因此在这种情况下只需要 20 GB。