Re: .gitignore sub-dir exclusions not overriding '*'
- From
- Phil Pennock <phil-gitml@phil.spodhuis.org>
- Date
- Nov 19, 2014, 23:41 UTC
- Message-ID
- <20141119234136.GA53731@tower.spodhuis.org>
- In-Reply-To
- <CACsJy8BHvucnEAW065OXOe5NBQkxp7+8HJb7XCGYgOa=pkxLVA@mail.gmail.com>
On 2014-11-19 at 16:48 +0700, Duy Nguyen wrote:
Show 15 quoted lines
> On Wed, Nov 19, 2014 at 10:40 AM, Phil Pennock > <phil-gitml@phil.spodhuis.org> wrote: > > Expected to work as .gitignore in top-level of repo: > > > > * > > !**/*.asc > > !.gitignore > > > > gitignore man page has this "It is not possible to re-include a file > if a parent directory of that file is excluded". In this case, > directory "foo" is ignored by "*". Although it makes sense for this > particular case to re-include something in foo because we can clearly > see there are rules to re-include. It's on my todo list, but I don't > know when it will be implemented.
Thanks for this and the patches and discussion which follow.
I didn't cover it in my report, but one of the scenarios I tried was to explicitly re-include directories, to make them candidates again, and either use directory-matching patterns in the top-level .gitignore or to use per-directory .gitignore to handle those directories.
Looking fresh today, I see that I failed to compare baseline behaviour without a .gitignore when using `git status` as a baseline for comparison. So a .gitignore like this:
*
!*/
!*.ascappeared to not work; even within the `foo/` sub-directory, `git status` shows no candidates for inclusion. But this is true even without a .gitignore. *sigh*
In fact, it looks like the simple three lines above work, without any .gitignore in sub-directories.
The behaviour which confused me between this simplified test-case and the original was that `git status` shows files in the top-level directory which are untracked, and in untracked files sub-directories where some other file in that directory is already tracked, but if no file in the sub-directory is already tracked, then `git status` does not report the files for inclusion, even if the cwd is inside that directory.
I tied myself in knots trying to avoid adding unencrypted files to the repo.
Thanks, -Phil