我正在尝试使用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
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
在Windows上使用git跟踪具有长路径的文件是否有任何变通方法?
我在Windows Vista Business,SP1上使用1.7.4.msysgit.0。
答案 0 :(得分:13)
限制为259个字符,所以你离它不远。如果<hugepath>/<filename>
的长度小于256个字符,那么您可以使用“subst”技巧:
一种选择是使用Windows命令shell中的subst
:
subst P: <projectpath>
然后使用mysysgit:
cd /p
<git commands>
如果不起作用,可以从Windows Vista / 7/2008命令shell(RunAs管理员)创建硬链接:
mklink /D C:\p <projectpath>
然后使用mysysgit:
C:
cd \p
<git commands>
答案 1 :(得分:10)
Cygwin,因此它的git包,通过自动将它们映射到UNC路径,确实透明地支持这些长路径。
答案 2 :(得分:1)
GIT 1.9及更高版本为您提供了设置longPaths属性的选项。
git config --system core.longpaths true
此属性将配置GIT以允许您尝试签出的长路径。
答案 3 :(得分:0)
这不是Windows的限制,它实际上支持任意长的文件名,并且只要我记得就已经这样做了。
我看到你正在使用//?/
。根据{{3}},您应该使用\\?\
。使用\\?\
时,正斜杠不转换为反斜杠。
答案 4 :(得分:0)
有一个git选项可以让你处理长路径:core.longpaths。它从git 1.9.0开始可用。