Re: git version 2.20.1.windows.1 throws file name too long in gitk
- From
Bret Barkelew <bret@corthon.com>
- Date
- Jan 4, 2019, 03:38 UTC
- Message-ID
- <CAGTkKag-fTy3iZAKJxEnWD6_b_3pfuYvQQKBkLaeSL8wKM2sfg@mail.gmail.com>
- In-Reply-To
- <CAGyf7-HcncFOfmm5McEkOvCTkHNdePDSEQDZwEAK=z1bmC=QKw@mail.gmail.com>
They are the exact same path (with a different drive letter).
Another thing I've been able to confirm is I uninstalled git 2.20.1 and installed 2.19.0 on the failing system, and the older version of Git works. I've also tried a suggested fix I saw elsewhere to enable long path names in the Windows registry, which did not resolve the issue with git 2.20.1.
Happy to collect any additional data. - Bret
On Thu, Jan 3, 2019 at 7:10 PM Bryan Turner <bturner@atlassian.com> wrote:
Show 46 quoted lines
>
> On Thu, Jan 3, 2019 at 6:21 PM Bret Barkelew <bret@corthon.com> wrote:
>>
>> When I open gitk in a particular repository under this version of Git
>> for Windows, I now get a dialog box that says "Error: couldn't execute
>> "git": file name too long". I've noticed that the most pronounced
>> effect is that I cannot see the file diffs (or sometimes the file name
>> list) for any of the commits. I don't know the exact repro, but I've
>> narrowed down the following things:
>>
>> - This does not happen with the same repo if I use a system that has
>> git 2.19.0.windows.1 on another machine.
>> - This does not happen on my current machine in a freshly cloned repo.
>
>
> How “deep” are the paths to the different clones on the different systems? Are all of the clones at exactly the same path on disk?
>
> Git on Windows is (by defaulted) limited by MAX_PATH, which is 260 characters. That length is calculated including the path to the repository itself and then to the file inside the repository. That means, for example, a given repository cloned to C:\repo may not have issues, but the same repository cloned to C:\Users\Bryan\Documents\workspaces\repo may.
>
>>
>> However, as soon as the remote updates with any changes on a given
>> fetch/pull, the repo is put in a bad state permanently.
>>
>> I've pasted the output from gitk below...
>>
>> couldn't execute "git": file name too long
>> couldn't execute "git": file name too long
>> while executing
>> "open $cmd r"
>> (procedure "getallcommits" line 48)
>> invoked from within
>> "getallcommits"
>> (procedure "readcache" line 80)
>> invoked from within
>> "readcache file827e200"
>> ("eval" body line 1)
>> invoked from within
>> "eval $script"
>> (procedure "dorunq" line 11)
>> invoked from within
>> "dorunq"
>> ("after" script)
>>
>> Happy to gather whatever data needed.
>> Thanks!
>> - Bret Barkelew