git mingw32和windows下的长路径/文件名

时间:2011-10-23 13:22:59

标签: windows linux git svn git-svn

我有一个生产SVN存储库,我想用git克隆。当我尝试git svn clone时,我得到的错误与一些具有路径文件名长组合的文件有关。

我认为这是由git用来运行的GNU shell mingw32引起的限制,因为windows或unix都没有这种限制。

有没有办法克服这个限制?在我确定要转移到git之前,我不想开始更改文件名/路径。

感谢。

3 个答案:

答案 0 :(得分:5)

这是一个限制Windows,因为MAX_PATH是260个字符,这个路径最多可以包含260个字符(所以一旦你考虑了驱动程序字母,冒号和初始{{1}和尾随的NUL,你的路径有256个字符。)

Windows有一个unicode路径,长度约为32,767。您可以通过在路径前添加\

来获得此类路径

详情请见此处:http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx

您还可以查看使用\\?\替换带有驱动器名称的长路径并对其进行操作。

http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/subst.mspx?mfr=true

以上是克服限制的方法,但当然在subst期间可能不适用。确保从克隆开始的路径尽可能短。使用git svn clone将驱动器号分配给要克隆的路径并使用该驱动器。

答案 1 :(得分:0)

我在Windows XP上遇到了同样的问题。我按照上面的解决方案使用了subst,它工作正常,如下:

首先,在命令提示符下:subst z:c:\ my \而\ long \ path \ to \ local \ repo \

然后在git中:git clone https://github.com/my/repo z:/ repo_name

以前太长的存储库现已克隆到我的电脑上。

答案 2 :(得分:0)

以上解决方案有效。除此之外,旧的回购路径可能仍然在tortoicegit中显示brocken与其完整的lenth窗口路径,但如果你去Windows资源管理器并采取将在subst命令后产生的新驱动器号,你可以看到正确的repo和tortoicegit将在那里完美地工作。