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".