git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Windows path limites, was Re: [PATCH v5 2/5] setup: sanity check file size in read_gitfile_gently

From
Doug Kelly <dougk.ff7@gmail.com>
Date
Apr 28, 2015, 15:33 UTC
Message-ID
<CAEtYS8QMSSbfd2xSCMh2YTW2NSz7uBnsmKUi9SjSCrJ1TBEH+w@mail.gmail.com>
In-Reply-To
<e7c614c97eb4b1819cec25567a7adc97@www.dscho.org>

On Tue, Apr 28, 2015 at 2:23 AM Johannes Schindelin <johannes.schindelin@gmx.de> wrote:

Show 10 quoted lines
>
> Hi Peff,
>
> On 2015-04-28 08:02, Jeff King wrote:
>
> > My understanding is that PATH_MAX is set absurdly low on Windows
> > systems (and doesn't actually represent the real limit of a path!).
>
> Well, yes and no. Yes, it is absurdly low on Windows, and yes, it is not the real limit of a path *if you know how to work around it*. Most Win32 API calls actually do have that absurdly low limit, but internally longer paths can be represented (and there is a hack where you prefix the path -- which must be an absolute one for this hack -- by `\\?\`). Keep in mind, though, that even the Windows Explorer is (at least sometimes) limited by the absurdly low path limit.
>

One more thing worth noting is that path lengths are actually restricted further within git_path_submodule(), I would presume to reserve some amount of space when cloning a submodule (it seems to set aside 100 characters)? For other cases, yes, Dscho is absolutely right: the MAX_PATH constant is 260 (which gives something like 256 usable characters). If you're able to do everything through the Unicode Win32 APIs, you can reach 65535 characters, assuming the filesystem supports it (NTFS does, FAT32 would not, for example). I recall there being one function (possibly thinking of mktemp) that couldn't properly handle the long paths, but I believe that was it.

Other apps may or may not handle the longer paths well; the core.longpaths switch may prevent mishaps in more than just Explorer, but the downside isn't disaster always either -- for example, Explorer just refuses to browse to that path. (Note that other apps may include both the msys bits as well as the Windows command line built-in commands, which may make things that farm out to sh behave in unusual ways. I vaguely remember testing this myself, but I don't recall what I did exactly or what happened.)

--Doug
Previous: Johannes SchindelinNext: Johannes Schindelin
Message 25 of 38 in “Improving performance of git clean”
  1. 0/5 Improving performance of git cleanErik Elfström, Apr 25, 2015
  2. 1/5 setup: add gentle version of read_gitfileErik Elfström, Apr 25, 2015
  3. Junio C HamanoApr 25, 2015
  4. Junio C HamanoApr 25, 2015
  5. 2/5 setup: sanity check file size in read_gitfile_gentlyErik Elfström, Apr 25, 2015
  6. Junio C HamanoApr 25, 2015
  7. Erik ElfströmApr 25, 2015
  8. Junio C HamanoApr 26, 2015
  9. 0/5 Improving performance of git cleanErik Elfström, Apr 26, 2015
  10. 1/5 setup: add gentle version of read_gitfileErik Elfström, Apr 26, 2015
  11. Jeff KingApr 28, 2015
  12. erik elfströmApr 28, 2015
  13. Jeff KingApr 28, 2015
  14. Jonathan NiederApr 28, 2015
  15. Jeff KingApr 28, 2015
  16. Jonathan NiederApr 28, 2015
  17. Jeff KingApr 28, 2015
  18. Jonathan NiederApr 28, 2015
  19. Junio C HamanoApr 28, 2015
  20. Stefan BellerApr 29, 2015
  21. Junio C HamanoApr 30, 2015
  22. 2/5 setup: sanity check file size in read_gitfile_gentlyErik Elfström, Apr 26, 2015
  23. Jeff KingApr 28, 2015
  24. Windows path limites, was Re: [PATCH v5 2/5] setup: sanity check file size in read_gitfile_gentlyJohannes Schindelin, Apr 28, 2015
  25. Doug KellyApr 28, 2015
  26. Johannes SchindelinApr 28, 2015
  27. erik elfströmApr 28, 2015
  28. Junio C HamanoApr 29, 2015
  29. 3/5 t7300: add tests to document behavior of clean and nested gitErik Elfström, Apr 26, 2015
  30. 4/5 p7300: add performance tests for cleanErik Elfström, Apr 26, 2015
  31. Jeff KingApr 28, 2015
  32. erik elfströmApr 28, 2015
  33. 5/5 clean: improve performance when removing lots of directoriesErik Elfström, Apr 26, 2015
  34. Jeff KingApr 28, 2015
  35. erik elfströmApr 28, 2015
  36. 3/5 t7300: add tests to document behavior of clean and nested gitErik Elfström, Apr 25, 2015
  37. 4/5 p7300: add performance tests for cleanErik Elfström, Apr 25, 2015
  38. 5/5 clean: improve performance when removing lots of directoriesErik Elfström, Apr 25, 2015

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.