我有一个生产 SVN 存储库,我想用 git 克隆它。当我尝试
git svn clone
时,我收到错误,该错误与某些具有长路径文件名组合的文件有关。
我认为这是由 git 运行的 GNU shell mingw32 引起的限制,因为 Windows 或 unix 都没有这种限制。
有什么办法可以克服这个限制吗?在确定要转移到 git 之前,我不想开始更改文件名/路径。
谢谢。
这是 Windows 的一个限制,因为
MAX_PATH
是 260 个字符,即路径最多可以有 260 个字符(因此,一旦您考虑了驱动程序号、冒号、开头的 \
和结尾的 NUL,您的路径有 256 个字符)。
Windows 有一个 UNC 路径,长度约为 32,767。您可以通过在路径前加上
\\?\
来获得这样的路径
请参阅此处了解详细信息:http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx
您还可以查看使用
subst
用驱动器名称替换长路径并对其进行操作。
http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/subst.mspx?mfr=true
以上是克服限制的方法,但当然,在
git svn clone
期间应用可能并不容易。确保开始克隆的路径尽可能短。使用 subst
为您要克隆的路径分配驱动器号并使用该驱动器。
我使用的是 Windows XP,也遇到了同样的问题。我使用 subst 按照上面的解决方案进行操作,它起作用了,如下所示:
首先,在命令提示符下: subst z: c:\my ather\long\路径 o\local EPO\
然后在 git 中: git clone https://github.com/my/repo z:/repo_name
以前太长的存储库现在已克隆到我的电脑上。
上述解决方案有效。除此之外,旧的存储库路径可能仍然在 tortoicegit 中显示为损坏,并具有完整的 Windows 路径,但是如果您转到 Windows 资源管理器并获取在 subst 命令后生成的新驱动器号,您可以看到正确的存储库和 tortoicegit将在那里完美工作。