Re: Change in .gitignore handling: intended or bug?
- From
Duy Nguyen <pclouds@gmail.com>
- Date
- Mar 9, 2016, 09:48 UTC
- Message-ID
- <CACsJy8AUs-DAo-GceO9ND9RPVeDOfm_UM4ZuaeNWDwBVMu+dnQ@mail.gmail.com>
- In-Reply-To
- <xmqqbn6olu1w.fsf@gitster.mtv.corp.google.com>
On Wed, Mar 9, 2016 at 1:10 AM, Junio C Hamano <gitster@pobox.com> wrote:
Show 10 quoted lines
> diff --git a/Documentation/gitignore.txt b/Documentation/gitignore.txt > index 3ded6fd..91d1ce2 100644 > --- a/Documentation/gitignore.txt > +++ b/Documentation/gitignore.txt > @@ -148,7 +148,43 @@ excluded, the following conditions must be met: > be in the same .gitignore file. > > - The directory part in the re-include rules must be literal (i.e. no > - wildcards) > + wildcards and has to start with a `/`).
Technically '/' can just appear anywhere in the pattern, except at the end. But because the patterns in question must look like this
dir # or any pattern, even "*"
!dir/someth*ngeven if there is a slash at the end (and is ignored), we are still good. Not sure how to phrase that though.
Show 36 quoted lines
> + > +A re-inclusion of a directory makes all files in the directory > +unignored. For example, suppose you have files `.gitignore`, > +`dir/file1`, `dir/file2`, and `dir/file3`, and have the following in > +your `.gitignore`: > + > +---------------- > +# .gitignore is not mentioned in .gitignore > +* > +!/dir > +# dir/file1 is not mentioned in .gitignore > +dir/file2 > +!dir/file3 > +---------------- > + > +Then: > + > + - `.gitignore` gets ignored, because it matches the `*` at the top > + level; > + > + - `dir/file1` does not get ignored, because `/dir` marks everything > + underneath `dir/` directory to be 're-included' unless otherwise > + specified; > + > + - `dir/file2` gets ignored, because `dir/file2` matches it. > + > + - `dir/file3` does not get ignored, because `!dir/file3` matches it. > + Note that the entry `!dir/file3` is redundant because everything > + underneath `dir/` is marked to be 're-included' already. > + > +Some earlier versions of Git treated `!/dir` above differently in > +that it did not cause the paths under it unignored (but merely told > +Git that patterns that begin with dir/ should not be ignored), but > +this has been corrected to be consistent with `/dir` that says "the > +directory `dir/` and everything below are ignored." > +
Looks good.
-- Duy