msys git和长路径

Jon*_*nan 13 windows git path msysgit

我正在尝试使用git来更有效地管理使用CVS进行源代码控制的项目,但是我遇到了问题add- 一个确实有很长路径的文件 - 276个字符.

不幸的是,这个文件是由我正在使用的工具随附的自定义IDE生成的,并且它应该由该工具存在,因此无法重命名或移动.

使用以下方法尝试使这半可读:

<projectpath>- 保存此项目所有组件
<hugepath>的路径 - 从<projectpath>我遇到问题的第一个文件的路径 - 我遇到问题
<filename>的文件的名称

me@work <projectpath>
$ git init
Initialized empty Git repository in <projectpath>/.git/

me@work <projectpath> (master)
$ git add <hugepath>/<filename>
fatal: unable to stat '<hugepath>/<filename>': No such file or directory

me@work <projectpath> (master)
$ ls -al <hugepath>
ls: <hugepath>/<filename>: File or path name too long
total 3
drwxr-xr-x    3 me Administ        0 May  3  2010 .
drwxr-xr-x    4 me Administ     4096 May  3  2010 ..
drwxr-xr-x    2 me Administ        0 May  3  2010 CVS
Run Code Online (Sandbox Code Playgroud)

msys工具使用UNC前缀来处理路径,这通常允许您在Windows上处理长文件,但这似乎并没有解决路径限制:

me@work <projectpath> (master)
$ git add //?/<projectpath>/<hugepath>/<filepath>
fatal: Too long path: //?/<projectpath>/<hugep (intin - the path displayed is trimmed)

me@work <projectpath> (master)
$ ls-al //?/<projectpath>/<hugepath>/
ls: //?/<projectpath>/<hugepath>/.: No such file or directory
ls: //?/<projectpath>/<hugepath>/<filepath>: No such file or directory
total 2
drwxr-xr-x    4 me Administ     4096 May  3  2010 ..
drwxr-xr-x    0 me Administ        0 May  3  2010 CVS
Run Code Online (Sandbox Code Playgroud)

在Windows上使用git跟踪具有长路径的文件是否有任何变通方法?

我在Windows Vista Business,SP1上使用1.7.4.msysgit.0.

Roy*_*son 13

限制是259个字符,所以你离我不远.如果长度<hugepath>/<filename>小于256个字符,那么你可以使用"subst"技巧:

一种选择是subst从Windows命令shell使用:

subst P: <projectpath>
Run Code Online (Sandbox Code Playgroud)

然后使用mysysgit:

cd /p
<git commands>
Run Code Online (Sandbox Code Playgroud)

或者,如果这不起作用,则可以从Windows Vista/7/2008命令shell(RunAs管理员)创建硬链接:

mklink /D C:\p <projectpath>
Run Code Online (Sandbox Code Playgroud)

然后使用mysysgit:

C:
cd \p
<git commands>
Run Code Online (Sandbox Code Playgroud)


ak2*_*ak2 10

Cygwin及其git包通过自动映射到UNC路径,确实透明地支持这些长路径.


Dav*_*nan 0

这并不是 Windows 的限制,事实上,Windows 支持任意长的文件名,并且从我记事起就一直这样做。

我看到你正在使用//?/. 根据文档,您应该使用\\?\. 使用时\\?\正斜杠不会转换为反斜杠。