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

Re: git ls-files wildcard behavior considered harmful

From
Jeff King <peff@peff.net>
Date
Mar 31, 2015, 00:09 UTC
Message-ID
<20150331000924.GA27090@peff.net>
In-Reply-To
<20150330233614.GA17089@kitenet.net>
On Mon, Mar 30, 2015 at 07:36:14PM -0400, Joey Hess wrote:
Show 8 quoted lines
> Duy Nguyen wrote:
> > You can do "git --literal-pathspecs ls-files ..." or set GIT_LITERAL_PATHSPECS.
> 
> Thanks! --literal-pathspecs does allow getting around this.
> 
> Now I'm wondering what other parts of plumbing might be doing globbing
> that I did not anticipate. Maybe I should set the environment variable
> so I don't need to worry about it..

Pretty much everything takes magic patterns[1]. Pathspecs given to diff, path limiters for pruning, etc. If you are scripting with raw filenames (e.g., feeding the filenames out of another tool), I recommend setting GIT_LITERAL_PATHSPECS everywhere. That's what we do on the server side at GitHub (and is the reason I implemented --literal-pathspecs in the first place).

-Peff
[1] Note that globbing is just part of this. Names starting with colon
    are also magical, e.g. ":/foo", or even ":(literal)foo".  These are
    documented in the "pathspec" definition of "git help glossary".
Previous: Joey HessNext: Duy Nguyen
Message 4 of 6 in “git ls-files wildcard behavior considered harmful”
  1. Joey HessMar 30, 2015
  2. Duy NguyenMar 30, 2015
  3. Joey HessMar 30, 2015
  4. Jeff KingMar 31, 2015
  5. Duy NguyenMar 31, 2015
  6. Jonathan NiederMar 30, 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.