为什么git稀疏结账离开目录?

一些背景:我公司的服务模式始于一个基于设备的服务器模型。 我们会向客户端发送一个带有Windows Server 2003/2008的服务器,预装了一个networking服务器和我们的软件。 我们将所有客户端特定的configuration转移到Git存储库,并使用稀疏检出来使每个服务器只包含客户端软件正常运行所必需的内容。

设置稀疏检出时,我们遇到了巨大的不一致。 干的好

git clone git@github.com:ourclientconfigrepo.git . git config core.sparsecheckout true echo www.thisclient.com/ > .git/info/sparse-checkout git read-tree -m -u HEAD 

预期的结果是

 ls www.thisclient.com/ 

但是我们得到了

 ls www.thisclient.com/ www.randomclient1.com/ www.randomclient2.com/ www.randomclient3.com/ 

我已经尝试了多次,每次都在一个新目录中,每次都发生这个问题。 我的ju-git-su在这里失败了 我们使用git版本1.8.1.msysgit.1。

感谢您的帮助,请告诉我是否需要提供更多信息。

—编辑1 —

说明:存储库不过是我们客户端的configuration目录。 每个客户端在存储库中都有一个不同的目录,我们试图在每个客户端的个人服务器上进行稀疏检查,所以我们试图排除除了客户端之外的所有事情。

—编辑2 —

只是一个更新,事实certificate这是Windows文件夹权限wonky,Git试图删除非空目录。 通过删除空文件夹来修复它。 感谢任何和所有的帮助!

Solutions Collecting From Web of "为什么git稀疏结账离开目录?"

一个部分的解决方案:根据git-read-tree(1) ,你可以通过放一个! 在文件名前面。 这可能是一个错误,但是(也就是说,这是目录,而不是文件)。

我会继续调查。

根据https://stackoverflow.com/a/11222033/1210278 ,你可以手动标记目录与git update-index --skip-worktree www.randomclient1.com/

https://stackoverflow.com/a/9575837/1210278意味着排除只为目录,并说有一些错误。