From: Andreas Ericsson Date: Fri, 01 Feb 2008 08:56:43 GMT Subject: Re: [PATCH] gitignore(5): Allow "foo/" in ignore list to match directory "foo" Message-ID: <47A2DECB.5040007@op5.se> In-Reply-To: <7vr6fxbr5a.fsf@gitster.siamese.dyndns.org> Junio C Hamano wrote: > "pradeep singh rautela" writes: > >> How about something like, >> warning("Ignoring ignore entry because of trailing >> slash: %s\n Remove the trailing slash from the directory name to >> ignore it", string); >> May be this will help absolute git newbies. > > I am afraid that this is leading us in the wrong direction. > > What would be the first reaction if somebody sees such a > message? > > The message implies that the user said "foo/" which would be > ignored and the right substitution is "foo". If that is the > right substitution, why doesn't the stupid "git" program do > that for the user automatically?!?!?!?! > > See? > > "Remove the trailing" suggestion assumes that we would want "foo/" > and "foo" to mean the same thing. > > Maybe we do, but we usually match both directory "foo/" and > regular file "foo" when you say "foo", and we match only > directory "foo/" when you say "foo/", as you saw in the ls-files > example. > > While I am not 100% convinced that we want to keep the > distinction between these two forms, I am far from thinking that > the existing distinction in other parts of the system is useless > and should be removed. > > Maybe we would want to drop this distinction in the gitignore > entries, and the apparent inconsistency may not hurt in reality. > If that is what we would want, that is fine, but then we > shouldn't give a warning with a stupid piece of advice, but > instead just do it ourselves. > > Like this on top of 'master' (i.e. discarding all the previous > patches), perhaps... > > -- >8 -- > [PATCH] gitignore(5): Allow "foo/" in ignore list to match directory "foo" > > A pattern "foo/" in the exclude list did not match directory > "foo", but a pattern "foo" did. This just strips the trailing > slash from such input. > > This makes the behaviour slightly inconsistent with that of > pathspecs, where "foo/" only matches directory "foo" and not > regular file "foo" and make "foo/" in the ignore list match > regular file "foo" happily. This may hopefully does not matter > in practice. > > Signed-off-by: Junio C Hamano > --- > Documentation/gitignore.txt | 3 +++ > dir.c | 22 ++++++++++++++++++---- > t/t3001-ls-files-others-exclude.sh | 26 ++++++++++++++++++++++++++ > 3 files changed, 47 insertions(+), 4 deletions(-) > > diff --git a/Documentation/gitignore.txt b/Documentation/gitignore.txt > index 08373f5..081a4df 100644 > --- a/Documentation/gitignore.txt > +++ b/Documentation/gitignore.txt > @@ -57,6 +57,9 @@ Patterns have the following format: > included again. If a negated pattern matches, this will > override lower precedence patterns sources. > > + - If the pattern ends with a slash, that slash > is removed for the > + purpose of the following description. > + > - If the pattern does not contain a slash '/', git treats it as > a shell glob pattern and checks for a match against the > pathname without leading directories. Otherwise it sounds as if the entire pattern is removed. -- Andreas Ericsson andreas.ericsson@op5.se OP5 AB www.op5.se Tel: +46 8-230225 Fax: +46 8-230231