在将git存储库从Linux克隆到Windows系统时,我在结帐阶段遇到以下错误:
$ git clone gituser @ serveraddr:/git/git_repo.git git_WA
克隆到'git_WA'...
gituser @ serveraddr的密码:
remote:计数对象:500846,完成.
remote:压缩对象:100%(118676/118676),完成.
远程:总计500846(delta 307739),重用483023(delta 291136)
接收物体:100%(500846/500846),907.54 MiB | 完成9.04 MiB/s.
解决增量:100%(307739/307739),完成.错误:无法创建文件RealR**************************************************************************************************************************************************************************************************************validation.xml(没有这样的文件或目录)
签
出文件:100%(441329/441329)签出文件:100%(441329/441329),完成.
完成.
案例2:克隆为裸仓库,从本地裸仓库中检出全部=>相同的错误.
案例3:直接克隆C:\中的仓库,结账成功,无错误.
- >看起来像文件名/文件路径长度限制的问题.
案例4:从SVN repo签出相同的文件.能够在任何位置结账,没有任何问题.因此从Windows端没有问题.(是的,我在SVN和GIT中都有数据,我只是从SVN迁移到GIT).
因此,问题必须在msysgit内,一些文件路径长度限制.可以调整gitclient/msysgit中的路径长度吗?
Edit1:所有操作都尝试使用TortoiseGIT客户端v1.8.0和git-bash:git版本1.8.0.msysgit.0.
Edit2:添加了克隆时使用的实际命令.
通常当我检查不同的分支或重置时,我会从一个到十几个文件的窗口中获得"权限被拒绝"错误 - 但是特定文件因运行而异.这是我刚刚做过的测试的输出,GIT_TRACE = 1.跟踪仅在错误消息之前添加了一行:
$ git checkout master trace: built-in: git 'checkout' 'master' error: git checkout-index: unable to create file dotnet/src/myfile.cs (Permission denied) D dotnet/src/myfile.cs Switched to branch "master"
我很确定这是在我的机器上使用病毒扫描程序或其他索引服务的比赛.如果竞争持续存在,我可以使用sysinternals来查看文件句柄打开的进程.但是,它发生得很快,我不知道有一个工具可以告诉我这个冲突.令人惊讶的是,我没有发现任何描述类似行为的人.如何使这些错误停止或进一步诊断问题?
我特别希望通过识别正在进行同步访问的进程来结束文件访问竞争. 因此,对于在拒绝编辑时显示哪个进程具有文件锁定的工具的建议将非常有用.我知道'解锁器'和类似的工具会告诉我哪个进程持有文件锁定一段时间.这不适用于此问题,因为该过程会在非常短的时间内锁定文件.所以该工具需要在没有我干预的情况下收集适当的数据,因为我太慢了.