git clone并省略大文件

时间:2015-10-13 13:49:50

标签: git

情况如下。 Ad-hock分析存储库,每个分析都有一个目录。每个目录都包含一个与一个或多个数据文件相连的脚本,这些文件具有不同的格式并且大小不同(有时相当大)。没有数据的脚本通常没用,所以我们想存储数据文件。另一方面,有时查看脚本而不必强制下载相关数据文件(以确定如何进行某些分析)是有用的。

我们绝对不想将数据存储在单独的存储库中(运行时问题,将脚本与数据文件相关联等)。

分析内容:

  • git子模块 - 分开的仓库,一切都将远离脚本(不在同一目录中,因此随着时间的推移会变得混乱)
  • git hooks - 用于为推送请求应用约束或附加操作,如上所述 - 每个人都应该能够上传任何文件(除此之外:我们无法访问应用服务器端钩子)

我想到的是,从存储库中提取或克隆某些位置或某些文件(即>>> 50 MB)会很方便。只是不转移不需要的数据。 有可能吗?

如果某些文件未被后续提交触及,则从未来推送的角度来看,它们不是必需的。可能(或者甚至肯定)我缺乏关于git潜在机制的某些知识。我很感激澄清。

2 个答案:

答案 0 :(得分:0)

Git稀疏结账允许您将子目录设置为结帐或不结算等。我不认为它可以基于其他任何事情(例如大小)通过AFAIK进行。

答案 1 :(得分:0)

identity()

这实际上将仅允许提取小于给定大小的文件。

然后,您必须检出除大文件以外的所有文件。一种可能可行的简单策略是git clone --no-checkout --filter=blob:limit=100m,但我现在懒于对其进行测试。

有关更多详细信息,请参见以下答案:How do I clone a subdirectory only of a Git repository?