From: "Philip Oakley" <philipoakley@iee.org>
To: "John Szakmeister" <john@szakmeister.net>, <git@vger.kernel.org>
Subject: Re: Expected behavior of "git check-ignore"...
Date: Sun, 23 Jul 2017 17:33:42 +0100 [thread overview]
Message-ID: <1E42613B0CD743C6ADA24B9F1B43F0F9@PhilipOakley> (raw)
In-Reply-To: CAEBDL5URsbMazLBy-kWLJzECTEQ=61DN07xuu5NaO2Hw6r=j+w@mail.gmail.com
From: "John Szakmeister" <john@szakmeister.net>
Sent: Thursday, July 20, 2017 11:37 AM
>A StackOverflow user posted a question about how to reliably check
> whether a file would be ignored by "git add" and expected "git
> check-ignore" to return results that matched git add's behavior. It
> turns out that it doesn't. If there is a negation rule, we end up
> returning that exclude and printing it and exiting with 0 (there are
> some ignored files) even though the file has been marked to not be
> ignored.
>
> Is the expected behavior of "git check-ignore" to return 0 even if the
> file is not ignore when a negation is present?
I'm testing this on..
$ git --version
git version 2.10.0.windows.1
>
>>>>>
> git init .
> echo 'foo/*' > .gitignore
> echo '!foo/bar' > .gitignore
Is this missing the >> append to get the full two line .gitignore?
adding in a `cat .gitignore` would help check.
> mkdir foo
> touch foo/bar
I don't think you need these. It's the given pathnames that are checked, not
the file system content.
> git check-ignore foo/bar
Does this need the `-q` option to set the exit status?
echo $? # to display the status.
> <<<<
>
> I expect the last command to return 1 (no files are ignored), but it
> doesn't. The StackOverflow user had the same expectation, and imagine
> others do as well. OTOH, it looks like the command is really meant to
> be a debugging tool--to show me the line in a .gitignore associated
> with this file, if there is one. In which case, the behavior is
> correct but the return code description is a bit misleading (0 means
> the file is ignored, which isn't true here).
Maybe the logic isn't that clear? Maybe it is simply detecting if any one of
the ignore lines is active, and doesn't reset the status for a negation?
I appear to get the same response as yourself, but I haven't spent much time
on it - I'm clearing a backlog of work at the moment.
I also tried the -v -n options, and if I swap the ignore lines around it
still says line 2 is the one that ignores.
It gets more interesting if two paths are given `foo/bar foo/baz`, to see
which line picks up which pathname (and with the swapped ignore lines).
Is there a test for this in the test suite?
>
> Thoughts? It seems like this question was asked before several years
> ago but didn't get a response.
>
> Thanks!
>
> -John
>
> PS The SO question is here:
> https://stackoverflow.com/questions/45210790/how-to-reliably-check-whether-a-file-is-ignored-by-git
--
Philip
next prev parent reply other threads:[~2017-07-23 16:33 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-20 10:37 Expected behavior of "git check-ignore" John Szakmeister
2017-07-23 16:33 ` Philip Oakley [this message]
2017-07-24 9:33 ` John Szakmeister
2017-07-24 19:23 ` Junio C Hamano
2017-07-27 11:20 ` John Szakmeister
2017-07-27 17:05 ` Junio C Hamano
2017-07-30 15:57 ` Philip Oakley
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1E42613B0CD743C6ADA24B9F1B43F0F9@PhilipOakley \
--to=philipoakley@iee.org \
--cc=git@vger.kernel.org \
--cc=john@szakmeister.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).