Git推出大文件储存工具Git LFS,但它真的好用吗

Git LFS(全称为Git Large File Storage,Git大文件存储)被许多团队用来管理和存储大文件。本篇文章将解释Git LFS是什么,它的功能和使用场景,以及它究竟是不是管理大文件的最佳版本控制工具。

什么是Git LFS(Git大文件存储)?

Git LFS是一种开源的Git扩展,用于管理大文件和二进制文件,将它们存储在单独的 "LFS 存储库" 中, 从而让Git存储库保持在一个可管理的规模。

如今,很多的项目都包含代码和二进制资产。将大型二进制文件存储在Git存储库中可能会成为Git用户的瓶颈。

Git LFS存储如何工作?

Git大文件存储使用指针来引用文件,而不是将实际文件或二进制大对象(blobs,一种将二进制文件存储为一个实体的数据类型) 存储在Git存储库本身中。

因此,大文件/二进制大对象不会被直接写入Git存储库,而是被写入一个指针文件。文件/二进制大对象本身会被写入一个单独的服务器,称为LFS存储库。通过这种方式,可以对大文件进行版本控制,以及管理二进制大对象,同时释放Git存储库的空间。

我应该使用Git LFS吗?

如果您需要在Git中管理大文件或二进制文件,那么可以考虑使用Git LFS。(但是,如果您的团队中有美术人员和设计师,需要对他们的大型二进制艺术文件进行版本控制,那么您可能不希望使用Git LFS。关于这一点,我们将在下一节中详细讨论。)

使用Git LFS或其他替代方案的原因是,Git是一种分布式版本控制系统,每个开发人员在本地计算机上都有完整的变更历史记录。对大型二进制文件进行更改会导致什么?每次更改文件并提交后,Git 存储库的规模都会根据文件的大小而增加。这意味着获取文件会花费很长时间,并且很难对这些二进制文件进行版本控制和合并。

因此,每当文件增长时,Git存储库也会增长,这会导致Git用户在检出和克隆存储库时出现性能下降的情况。

Git LFS是为解决这些问题而创建的,但它自身也存在一些问题和限制。

Git LFS的问题

Git LFS虽然有效,但许多使用它的团队发现其管理起来较为困难。以下是考虑寻找Git LFS替代方案的一些原因:

设置Git LFS非常耗时

要使用Git LFS,每个用户都必须在其服务器和工作站上安装它。这样做很耗时,对管理员来说也是一种负担。而且一旦安装完成,对Git LFS的可见性和控制性都较低。

维护Git LFS需要额外的步骤

维护Git LFS需要额外的步骤,因为您必须为每个Git存储库(即每个Git项目)设置Git LFS。这意味着每个存储库都需要安装Git LFS,您还需要告诉LFS要跟踪的文件类型,然后将跟踪信息添加到存储库中,以便在提交该类型的文件时,它将被放置在LFS存储库中。对于还不太了解Git的用户来说,这颇具挑战性。

Git LFS不适用于美术团队

Git LFS对于软件开发人员来说是有帮助的,因为它使克隆和分支更加容易。但对于大多数需要与美术人员或设计师协作的团队来说,出于以下几个关键原因,它不是一个好的解决方案:

  • 它不与流行的美术和设计软件集成;
  • 非编码人员仍然需要承受从Git LFS拉取其资源时的性能损失;
  • 它是一个基于命令行的工具,因此用户必须学习一些命令才能获取或提交资产。许多美术人员会在这方面遇到困难,或者他们根本不愿这么做。虽然有一些图形化的Git LFS工具,但游戏引擎和设计工具与Git的集成较差;
  • 作为基于命令行的工具,查找文件的正确版本也变得复杂,这使得美术人员难以迭代特定资产。

因此,对于游戏开发或虚拟制作团队来说,Git LFS并不是一个理想的解决方案。

上述问题会影响团队的绩效。因此,尽管Git本身是免费的,但当您的团队需要更快、更具可扩展性的解决方案时,使用它的成本可能是昂贵的。

Git LFS的替代方案

Git LFS并不是在Git中管理大文件的唯一方式。替代方案包括其他开源或第三方修复程序,例如:

  • git-annex
  • git-bigfiles
  • git-fat
  • git-media
  • git-bigstore
  • git-sym

这些选项仍然存在与Git LFS相同的问题:它们是基于命令行的工具,不与美术或设计工具集成,如果使用它们,您仍然需要获取和发送文件(意味着仍然需要等待),而且找到一个文件的最近版本很具挑战性。您需要一种更好的方式来管理大型文件和二进制文件。

存储大文件的最佳版本控制工具:Perforce Helix Core

现在的项目比以往都大得多,其中包含许多的文件和混合资产。Git和Git LFS根本无法版本控制它们,但Perforce Helix Core可以。

Helix Core是来自Perforce的旗舰版本控制软件,是大型文件管理的最佳版本控制工具,原因如下:

二进制文件处理

Perforce Helix Core非常适合管理大型二进制文件。在Perforce Helix Core中,大文件存储是一种原生的能力,而不是附加组件。它让您能够将二进制文件与源代码一起存储。实际上,您的所有最大文件——二进制文件、源代码、艺术文件、视频文件、图像、库和构建产物等,都可以存放在单个储存库中。将所有资产存储在一个储存库中可以让分散的团队更快地行动。

可扩展性

Perforce Helix Core能够随着团队的全球扩展而扩展。Git通常通过距离用户数千英里的单个服务器访问,而使用Git LFS时,用户仍然必须通过网络获取他们需要的二进制文件。得益于分布式架构,Perforce Helix Core可以通过边缘服务器访问,将资产放置在靠近用户的位置,从而使他们更快地获取这些资产。

安全

在Perforce Helix Core中,您可以将权限设置为单个文件和IP地址,因此团队成员和外部贡献者只能访问他们需要的文件,或者您认为他们需要的文件。这减少了数据量,并保护了您的知识产权。您无法在本地Git中执行此操作,即使您使用类似GitHub这样的Git管理器,也只能为每个储存库或分支设置权限,而不能为单个文件设置权限。

协作

对于在数字资产上协作的团队来说,Perforce Helix Core比Git LFS更好,因为它提供了更好的文件锁定功能。LFS的“文件锁定”功能实际上只是一个“存储库锁定”,就是当更改中包含被其他用户锁定的文件时,此功能会阻止这个更改被推送到主储存库。
而Perforce Helix Core采用的是真实的文件锁定策略。如果您尝试提交一个包含已锁定文件的待处理更改列表,您会收到错误提示。如果发生这种情况,您可以轻松地从更改列表中删除已锁定的文件并提交其他内容。此外,全局锁定可见性有助于在第一时间防止冲突发生。不会有冲突,也不会有不必要的更改。

如果您想将您的Git LFS仓库迁移到Perforce Helix Core,并保留历史记录,即使其中存储了数百GB的二进制数据,请联系Perforce中国授权合作伙伴——龙智,我们的专家团队将为您提供专业建议。

顺便说一下,Perforce也有Git

您是否有需要使用Git的团队?Perforce为您提供了多个选项。如果您同时使用Perforce Helix Core和Git,您可以使用免费的Git连接器将Git资产简单地镜像到Perforce Helix Core中,该连接器对于已获得Perforce Helix Core许可的客户免费。此外,Perforce还通过Helix TeamHub为存储在Helix Core中的Git资产提供了代码审查工具。当以这种方式配置时,Helix TeamHub对于持有Perforce Helix Core许可的用户也是免费的。

Helix TeamHub也可以独立于Perforce Helix Core使用,可以在云端或本地部署。在这种方式下,它不仅可以用于托管Git储存库,还可以用于SVN、Mercurial、WebDav、Ivy、Maven和Docker储存库。

您的团队可以从5个用户和1GB的存储空间开始免费使用,随着团队规模的增长逐步付费。

文章来源:https://bit.ly/3mLVmdx

作者:龙智DevSecOps原文地址:https://segmentfault.com/a/1190000043716323

%s 个评论

要回复文章请先登录注册