【问题标题】:Too Many Directories In Working Copy After Git Sparse CheckoutGit 稀疏检出后工作副本中的目录过多
【发布时间】:2013-03-25 14:51:23
【问题描述】:

我们有一个 git repo (远程托管在 github - 我们称之为 Clients repo) 根目录中有 210 多个目录。我们有 210 多台 Windows 服务器,每台服务器都需要其中一个根目录,而实际上并不需要其他根目录。

所以我们登录到其中一台服务器,并使用 1.8.1.msysgit.1

  1. 从 git hub 克隆客户端存储库
  2. 启用稀疏结帐
  3. 使用我们希望在此服务器工作副本中的单个 *directory/* 更新 sparse-checkout 文件
  4. 执行我们的读取树操作

10 次中有 9 次一切正常,工作副本包含我们期望的单个目录。

但是,每隔一段时间,它就不会按预期工作,而且我们还会得到一些其他目录,这些目录也会渗透到工作副本中。它从来都不是完整的 210+,但会在 6-10 个其他目录之间。这些目录与所需目录的模式不匹配,也没有与所述模式匹配的任何子目录。

一旦发生这种情况,我们将永远无法解决本地 repo。我们已经尝试过:

  • 各种重置
  • 各种读取树
  • 禁用/重新启用稀疏签出
  • 检查日志,看看是否发生了任何奇怪的事情

最终,我们通常最终会删除本地存储库,再次执行相同的步骤,然后第二次就可以工作了。

除了重复克隆、设置稀疏结帐等之外,我们还没有找到可靠地重现问题的方法。在这种情况发生的 20 次左右中,它只在非 Windows 机器上发生过一次(我们有一个运行 git v1.8.1.5 的 ubuntu 服务器,两周前出现了同样的问题)。

我的 Google-Fu 在这方面很弱。我希望能深入了解为什么会发生这种情况,以及任何不让我们删除存储库并重新克隆它的潜在解决方法。提前致谢!

【问题讨论】:

    标签: git msysgit sparse-checkout


    【解决方案1】:

    我曾经有朋友遇到过这个问题。结果是他们已经从 Unix 系统上的子目录中删除了文件,然后当他们在 Windows 系统上执行 git reset 时,它会从(现在)空目录中删除所有文件,但不会删除目录因为 Git 只跟踪内容,而不是目录。

    是 Windows 系统上“更大”的文件夹子集吗?这些目录是空的吗?这可能是你的问题。

    【讨论】:

    • 嗯,目录确实是空的。但是,我找到了一台服务器,我可以在今天早上可靠地重现该问题。我会克隆存储库,启用稀疏签出,编辑稀疏签出文件,然后读取树 mu ...但是,在我这样做的多次中,我经常会得到一组不同的剩余部分(现在我意识到empty - 我认为仅仅假设目录中有文件是愚蠢的。)留下的目录。
    • 看来这确实是问题的核心,加上删除文件时的Windows权限。我将接受这个作为答案,谢谢!
    【解决方案2】:

    Windows 的权限很不稳定。这些文件夹可能在稀疏结帐清理后遗留下来,可能需要进入并手动删除它们。它们可能是空的;)

    【讨论】:

      猜你喜欢
      • 2012-06-03
      • 1970-01-01
      • 2014-06-10
      • 2016-06-18
      • 2020-05-28
      • 2018-09-19
      • 2016-05-07
      • 2014-03-25
      • 1970-01-01
      相关资源
      最近更新 更多