【问题标题】:what are limitations of shallow clone浅克隆的局限性是什么
【发布时间】:2012-10-30 11:06:17
【问题描述】:

在我们尝试引入 Git 的组织中,我们现在遇到了与二进制文件相关的 Git 行为问题。
我们的项目将包含二进制和文本类型文件的良好组合,典型大小可能为 1 GB。我们担心几年后完整克隆会变得太大并导致性能和磁盘空间问题。
将迁移到 Git 的环境之一当前将其软件安装在称为 TCM 的系统上。 7-10 年版本的存储库总大小为 2 TB。
ClearCase 上的另一个环境有大约 7-8 年的数据,大约 1 TB。
由于 Git 不存储在增量中,这会特别影响二进制文件,因此 5 年多后的情况引起了我们的用户的关注。
浅克隆功能本来是理想的。但是文档说:“浅层存储库有许多限制(您不能克隆或从中获取,也不能从中推送或推入),但如果您只对具有长期历史的大型项目的近期历史感兴趣,则足够历史,并希望将修复作为补丁发送。”。粗略检查浅层克隆会表明它工作正常,但肯定有已知的用例无法工作,因此文档
是否有已知的用例列表无法使用?

【问题讨论】:

  • 更新:自 git V1.9 起,浅层克隆的大部分限制都已解决。
  • Git 2.5(2015 年第二季度)支持单次提取提交!我在下面编辑了我的答案,现在引用“Pull a specific commit from a remote git repository”。
  • VTC 不清楚。文档对它不能做的事情进行了完整的总结。 “用例列表”是您可以想象的使用这些操作的任何内容。这是一个无限集,因此不可能放入答案中。

标签: git


【解决方案1】:

我会敦促您将二进制文件存储在专用存储库中,易于扩展且易于清理:像 Nexus 这样的工件存储库。
您在“How to handle a large git repository?”中还有其他选择。

试图将所有内容都保存在 Git 中,以某种不自然的方式使用它,总会带来更多值得的麻烦:它是一个 source 控制工具。您不妨将它用于它的好处。

话虽如此,浅克隆不支持推送(或者,至少,它很危险:参见“Why can't I push from a shallow clone?”)。
对于只读目的,一个简单的git archive 就足够了,如“not understanding git shallow clone”中所述。

2015 年更新:

【讨论】:

    【解决方案2】:

    Git Annex 也非常漂亮地解决了“git 中/附近的大二进制文件”问题。

    【讨论】:

      猜你喜欢
      • 2013-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-17
      • 2013-10-11
      • 1970-01-01
      • 2013-11-25
      相关资源
      最近更新 更多