Git Sparse Checkout后工作副本中的目录太多

时间:2013-03-25 14:51:23

标签: git msysgit sparse-checkout

我们有一个git repo (远程托管在github上 - 让它称之为客户端仓库)在根目录中有210多个目录。我们有210多个Windows服务器,每个服务器都需要其中一个根目录,并不需要其他根目录。

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

  1. 从git hub克隆客户端repo
  2. 启用稀疏结帐
  3. 使用我们在此服务器工作副本中所需的单个目录/ *更新稀疏结帐文件
  4. 执行我们的读取树操作
  5. 和10次中的9次正常工作,并且工作副本包含我们期望的单个目录。

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

    一旦发生这种情况,我们就无法解决当地的回购问题。我们尝试过:

    • 各种重置
    • 各种阅读树
    • 禁用/重新启用稀疏结帐
    • 检查日志以查看是否发生了奇怪的事情

    最终,我们通常会再次按照相同的步骤删除本地仓库,并且它只是第二次运行。

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

    我的Google-Fu在这方面很弱。我很感激任何有关为什么会发生这种情况的见解,以及任何没有我们删除回购并重新克隆它的潜在解决方法。提前谢谢!

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

Windows的权限很不稳定。稀疏结账后,文件夹可能已被清除,可能需要进入并手动删除它们。他们可能是空的;)