2011-02-14 92 views
10

我想使用git來更有效地管理使用CVS作爲其源代碼管理的項目的工作,但是我遇到了問題add -ing一個確實有很長路徑的文件--276字符。msys git和長路徑

不幸的是,這個文件是由自定義IDE生成的,我正在使用的工具隨附在工具中,因此無法重命名或移動。

使用以下,力圖使這個半可讀:

<projectpath> - 路徑保存所有的組件爲這個項目
<hugepath> - 從<projectpath>到我在與
問題的第一個文件的路徑<filename> - 我有問題的文件與

[email protected] <projectpath> 
$ git init 
Initialized empty Git repository in <projectpath>/.git/ 

[email protected] <projectpath> (master) 
$ git add <hugepath>/<filename> 
fatal: unable to stat '<hugepath>/<filename>': No such file or directory 

[email protected] <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文件長,但是這似乎並沒有得到解決的路徑限制:

[email protected] <projectpath> (master) 
$ git add //?/<projectpath>/<hugepath>/<filepath> 
fatal: Too long path: //?/<projectpath>/<hugep (intin - the path displayed is trimmed) 

[email protected] <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

我喜歡`我@工作',是你的真實用戶名還是你做的? – trysis 2014-03-07 04:15:11

+2

問題已在msysgit 1.9中修復。 看到我的答案「git pull中止錯誤文件名太長」http://stackoverflow.com/a/22831095/151641 – mloskot 2014-04-03 07:52:37

回答

0

這不是Windows的限制,它實際上支持任意長的文件名,並且只要我記得就已經這樣做了。我發現你正在使用//?/。根據documentation您應該使用\\?\。當使用\\?\時,正斜槓是而不是轉換爲反斜槓。

+1

在MSysGit(和其他POSIX程序移植到Win32)這是達到UNC路徑的方式 – CharlesB 2011-02-14 17:06:29

+0

問題大概在`POSIX`仿真層。如果它是一個適當的本地Windows端口,那麼你會沒事的。 – 2011-02-14 17:08:04

11

限制是259個字符,所以你不遠處。如果<hugepath>/<filename>長度不超過256個字符,那麼你可以使用「SUBST」絕招:

一種選擇是使用subst從Windows命令shell:

subst P: <projectpath> 
與mysysgit

然後:

cd /p 
<git commands> 

或者,如果不工作,從Windows Vista中/ 7/2008命令外殼(運行方式管理員)可以創建一個硬鏈接:

mklink /D C:\p <projectpath> 
與mysysgit

然後:

C: 
cd \p 
<git commands> 
10

Cygwin的,因此其GIT中包,不支持這樣的長路徑透明,通過將它們自動地映射到UNC路徑。

0

有一個允許你處理長路徑的git選項:core.longpaths。它從git 1.9.0開始可用。