天天看点

Git 常用的几种处理大型二进制文件的组件

Git 常用的几种处理大型二进制文件的组件

git大文件存储(large file storage,简称lfs)的目标是更好地把“大型二进制文件,比如音频文件、数据集、图像和视频”集成到git的工作流中。众所周知,git在存储二 进制文件时效率不高,因为:git默认会压缩并存储二进制文件的所有完整版本,如果二进制文件很多,这种做法显然不是最优。因此,在git仓库处理大量的二进制文件似乎是很多git用户的瓶颈。由于git的分散性,这意味着每个开发人员对文件的操作是变化的,对二进制文件的更改导致git仓库文件不断变化增长。当数据文件需要恢复的时候,这就变成一个很难操作的问题。存储虚拟机映像的快照,改变其状态,并存储新的状态到git仓库将与各自的快照的大小约为成长库的大小。如果这是你的团队每天的日常运作,你可能已经感受到来自过度肿胀git仓库的痛苦。

本文将介绍几种常用的处理大型二进制文件的组件,旨在为你解决上述问题。

git annex : 允许映射 git 资料库到文件,git annex 采用 haskell script 编写。

git lfs : 一个命令行扩展和规范用于利用git来管理大文件。其客户端采用go开发,为mac, windows, linux, and freebsd提供预编译好的binaries。

git bigfiles : 提供了python接口,允许用户处理没有存储在git上的大文件。

优点:

git 操作可以回滚。

可以设置文件大小的阈值,以限定“大文件”这个概念。

缺点:

存在兼容性问题。

git fat : 可以简单的处理一些比较大的文件,而无需提交到git。同时,git-fat 也支持 rsync 同步处理。

git media : 可能是可供选择的最古老的多媒体处理方案。 git media使用类似过滤器,并支持亚马逊的s3,本地文件系统路径,scp,atmos和webdav作为后端存储大文件。 git media是用ruby编写的。

git bigstore : 最初实现是作为 git media 替代品。它支持amazon s3的,谷歌云端存储或rackspace公司云帐户作为后端存储二进制文件。git bigstore 提高协同开发时的稳定性。 git bigstore是根据apache 2.0许可授权。git bigstore是用python编写,需要python2.7以上的运行环境。

仅需要python2.7以上运行环境

使用透明

目前只支持基于云存储。

git sym : 是一款通过git符号链接的进行大文件处理的软件,其目的是从修订控制中分离出庞大的文件缓存。

结论:

有多种方式来处理git仓库大型二进制文件,其中许多人使用几乎相同的工作流程和方法来处理这些文件。然而,一些解决方案都不再积极开发,因此,选择一个有技术支持的解决方案尤为重要。如果windows支持或透明度是一个必须具备的条件,你最好选择git lfs,因为它会被长期支持。

====================================分割线================================