On Fri, Mar 20, 2015 at 6:36 AM, <[email protected]> wrote:
> I am trying to setup my git ignore (resp. .git/info/exclude) so that I exclude
> all directories and files except the content of directories that I
> specifically include (incl. anything within them recursively).
>
> I set the .git/info/exclude with the following content:
>
> ========
> # Exclude everything
> /*
> # Except the below that we include
> !/db/data/load/base/bootstraponly
> !/db/data/load/base/safetoload
> !/db/ddl
> !/labels
> !/reports/usrint
> !/scripts
> !/src/cmdsrc/usrint
> ========
>
> However it does not do what I anticipated. It indeed excludes everything but
> the include part does not work - it only works for !/labels and !/scripts
> directories (i.e. the first level directories). All other are still ignored -
> so when I create file /db/data/load/base/bootstraponly/somefile.txt git still
> ignores it...
>
> Any idea what I am doing wrong?
The fourth bullet point of the "Pattern Format" section of the
gitignore man page has this to say, which explains the behavior you're
seeing:
An optional prefix "!" which negates the pattern; any matching
file excluded by a previous pattern will become included again.
It is not possible to re-include a file if a parent directory of
that file is excluded. Git doesn’t list excluded directories for
performance reasons, so any patterns on contained files have no
effect, no matter where they are defined.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html