Git LFS 和 git-annex 有何不同?
How do Git LFS and git-annex differ?
git-annex 已经存在了很长一段时间,但从未真正获得动力。
Git LFS 相当年轻,已经得到 GitHub、Bitbucket 和 GitLab 的支持。
这两个工具都处理 git 存储库中的二进制文件。另一方面,GitLab 似乎在一年内取代了 git-annex with Git LFS。
- 有哪些技术差异?
- 他们解决的是同一个问题吗?
他们解决了同样的问题。
让我从 pro/con 开始,然后我将讨论技术差异。
git-附件
Pros:
- 支持可以存储二进制文件的多个遥控器。
- 无需 hosting 提供商的支持即可使用(有关详细信息,请参阅 here)。
缺点:
- Windows beta支持,已经很久了
- 用户需要为日常工作学习单独的命令
- github 和 bitbucket 不支持
git-lfs
Pros:
- 由 github、bitbucket 和 gitlab
支持
- Most 支持所有 os 的
- 易于使用。
- 基于过滤器自动执行
缺点:
- 需要自定义服务器实现才能工作。一个简单的 ssh 远程是不够的。参考服务器正在开发中 https://github.com/git-lfs/lfs-test-server.
技术
git-附件
git-annex 通过在您的 repo 中创建一个已提交的符号链接来工作。实际数据存储到单独的后端(S3、rsync 和许多其他后端)。它写在 haskell 中。由于它使用符号链接,windows 用户被迫以非常不同的方式使用附件,这使得学习曲线更高。
git-lfs
指针文件已写入。 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。
git-annex 已经存在了很长一段时间,但从未真正获得动力。
Git LFS 相当年轻,已经得到 GitHub、Bitbucket 和 GitLab 的支持。
这两个工具都处理 git 存储库中的二进制文件。另一方面,GitLab 似乎在一年内取代了 git-annex with Git LFS。
- 有哪些技术差异?
- 他们解决的是同一个问题吗?
他们解决了同样的问题。
让我从 pro/con 开始,然后我将讨论技术差异。
git-附件
Pros:
- 支持可以存储二进制文件的多个遥控器。
- 无需 hosting 提供商的支持即可使用(有关详细信息,请参阅 here)。
缺点:
- Windows beta支持,已经很久了
- 用户需要为日常工作学习单独的命令
- github 和 bitbucket 不支持
git-lfs
Pros:
- 由 github、bitbucket 和 gitlab 支持
- Most 支持所有 os 的
- 易于使用。
- 基于过滤器自动执行
缺点:
- 需要自定义服务器实现才能工作。一个简单的 ssh 远程是不够的。参考服务器正在开发中 https://github.com/git-lfs/lfs-test-server.
技术
git-附件
git-annex 通过在您的 repo 中创建一个已提交的符号链接来工作。实际数据存储到单独的后端(S3、rsync 和许多其他后端)。它写在 haskell 中。由于它使用符号链接,windows 用户被迫以非常不同的方式使用附件,这使得学习曲线更高。
git-lfs
指针文件已写入。 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。