From: Jeff King Date: Tue, 31 Mar 2015 00:09:24 GMT Subject: Re: git ls-files wildcard behavior considered harmful 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: > 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".