使用二进制文件的Git存储库设置

时间:2011-05-10 21:25:53

标签: git

我的公司正在考虑实施Git,但我对如何设置它的最佳方式有疑问。我们有3个站点,并计划使用Gerrit2来创建镜像。我们的存储库大约2GB,我们想开始添加二进制文件。我担心空间使用情况。我不介意所有版本的二进制文件都存储在少数几个位置,但我想确保它们不会让克隆操作陷入困境。

我知道Git使用硬链接,但我认为只有在每个安装上放置一个存储库副本时才能使用。是否有更好的选择,如果有,有什么权衡?我正在看的选项是“--shared”和“--reference”。

4 个答案:

答案 0 :(得分:6)

git mediamentioned Marcelo的另一种替代方法是 git annex

请参阅what git-annex is not

  git-annex不是git-media,尽管他们都从类似的方向处理同样的问题。我在编写git-annex之后才了解到git-media,但我可能仍然会编写git-annex而不是使用它。

     

目前,git-media的优点是使用git污迹过滤器而不是git-annex的一堆符号链接,它可能更适合某些情况。
  它缺乏git-annex对广泛分布式存储的支持,只使用一个后端数据存储   它也不支持文件内容的部分检出,例如git-annex。


注意:abdelsaid添加了in the comments

您可以将git-annex与 bup 一起使用(bup允许您拥有版本),请参阅 git-annex/ special remotes/ bup(和Using bup

我在“git with large files

中详细介绍了bup

答案 1 :(得分:3)

对大型二进制文件使用git-media。它将对二进制文件的引用存储为SHA1总和,并将二进制文件本身托管在您选择的位置(和协议)中。当您执行克隆时,它仅获取签出工作副本所需的二进制文件。

答案 2 :(得分:3)

要使用原生git,请使用单独的repo通过git子模块存放二进制文件。这对我有用的IVR系统有很多巨大的.wav文件。如果您需要进一步澄清,请随时与我联系。

这是一篇很好的文章:

http://progit.org/book/ch6-6.html

希望这会有所帮助

答案 3 :(得分:2)

另一种可能性是git-fat(或者Cyan'} git-fat fork有一些增强功能);它比git-media(Ruby)的重量更轻(仅取决于Python和rsync),并且明显比git-annex(Haskell)轻。其成本较低,但在某些情况下,这可能是最佳解决方案。