git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 12/12] Add git-check-ignore sub-command

From
Adam Spiers <git@adamspiers.org>
Date
Oct 16, 2012, 14:13 UTC
Message-ID
<CAOkDyE9g6rNiv7nnTu2i34dbn_z7r5SmhDuxief7iEQLVxtO5g@mail.gmail.com>
In-Reply-To
<7vlif7v03r.fsf@alter.siamese.dyndns.org>
On Mon, Oct 15, 2012 at 3:31 PM, Junio C Hamano <gitster@pobox.com> wrote:
Show 10 quoted lines
> Nguyễn Thái Ngọc Duy  <pclouds@gmail.com> writes:
>
>> +For each pathname given via the command-line or from a file via
>> +`--stdin`, this command will list the first exclude pattern found (if
>> +any) which explicitly excludes or includes that pathname.  Note that
>> +within any given exclude file, later patterns take precedence over
>> +earlier ones, so any matching pattern which this command outputs may
>> +not be the one you would immediately expect.
>
> "The first exclude pattern" is very misleading, isn't it?
I don't think so, because of the second sentence.
Show 18 quoted lines
> For example, with these in $GIT_DIR/info/exclude, I would get:
>
>         $ cat -n .git/info/exclude
>           1 *~
>           2 Makefile~
>         $ git check-ignore -v Makefile~
>         .git/info/exclude:2:Makefile~   Makefile~
>
> which is the correct result (the last one in a single source decides
> the fate of the path), but it hardly is "first one found" and the
> matching pattern in the output would not be something unexpected for
> the users, either.
>
> The reason it is "the first one found" is because the implementation
> arranges the loop in such a way that it can stop early when it finds
> a match---it simply checks matches from the end of the source.
>
> But that is not visible to end-users,

Correct; that's precisely why I wrote the second sentence which explicitly explains this.

> and they will find the above description just wrong, no?

It's not wrong AFAICS, but suggestions for rewording this more clearly are of course welcome. Maybe s/immediately/intuitively/ ?

Show 24 quoted lines
>> +OUTPUT
>> +------
>> +
>> +By default, any of the given pathnames which match an ignore pattern
>> +will be output, one per line.  If no pattern matches a given path,
>> +nothing will be output for that path; this means that path will not be
>> +ignored.
>> +
>> +If `--verbose` is specified, the output is a series of lines of the form:
>> +
>> +<source> <COLON> <linenum> <COLON> <pattern> <HT> <pathname>
>> +
>> +<pathname> is the path of a file being queried, <pattern> is the
>> +matching pattern, <source> is the pattern's source file, and <linenum>
>> +is the line number of the pattern within that source.  If the pattern
>> +contained a `!` prefix or `/` suffix, it will be preserved in the
>> +output.  <source> will be an absolute path when referring to the file
>> +configured by `core.excludesfile`, or relative to the repository root
>> +when referring to `.git/info/exclude` or a per-directory exclude file.
>> +
>> +If `-z` is specified, the output is a series of lines of the form:
>> +
>
> Hmph... the remainder of the paragraph seems to have been chopped off.

Yes, an earlier review also caught this but I have not had time to fix it yet, sorry :-/

Previous: Nguyen Thai Ngoc DuyNext: Junio C Hamano
Message 50 of 55 in “nd/attr-match-more-optim, nd/wildmatch and as/check-ignore”
  1. Nguyễn Thái Ngọc DuyOct 15, 2012
  2. 1/6 exclude: stricten a length check in EXC_FLAG_ENDSWITH caseNguyễn Thái Ngọc Duy, Oct 15, 2012
  3. 2/6 exclude: split basename matching code into a separate functionNguyễn Thái Ngọc Duy, Oct 15, 2012
  4. 3/6 exclude: fix a bug in prefix compare optimizationNguyễn Thái Ngọc Duy, Oct 15, 2012
  5. 4/6 exclude: split pathname matching code into a separate functionNguyễn Thái Ngọc Duy, Oct 15, 2012
  6. 5/6 gitignore: make pattern parsing code a separate functionNguyễn Thái Ngọc Duy, Oct 15, 2012
  7. 6/6 attr: more matching optimizations from .gitignoreNguyễn Thái Ngọc Duy, Oct 15, 2012
  8. 01/13 ctype: make sane_ctype[] const arrayNguyễn Thái Ngọc Duy, Oct 15, 2012
  9. 02/13 ctype: support iscntrl, ispunct, isxdigit and isprintNguyễn Thái Ngọc Duy, Oct 15, 2012
  10. 03/13 Import wildmatch from rsyncNguyễn Thái Ngọc Duy, Oct 15, 2012
  11. 04/13 wildmatch: remove unnecessary functionsNguyễn Thái Ngọc Duy, Oct 15, 2012
  12. 05/13 wildmatch: follow Git's coding conventionNguyễn Thái Ngọc Duy, Oct 15, 2012
  13. 06/13 Integrate wildmatch to gitNguyễn Thái Ngọc Duy, Oct 15, 2012
  14. 07/13 t3070: disable unreliable fnmatch testsNguyễn Thái Ngọc Duy, Oct 15, 2012
  15. 08/13 wildmatch: make wildmatch's return value compatible with fnmatchNguyễn Thái Ngọc Duy, Oct 15, 2012
  16. 09/13 wildmatch: remove static variable force_lower_caseNguyễn Thái Ngọc Duy, Oct 15, 2012
  17. 10/13 wildmatch: fix case-insensitive matchingNguyễn Thái Ngọc Duy, Oct 15, 2012
  18. 11/13 wildmatch: adjust "**" behaviorNguyễn Thái Ngọc Duy, Oct 15, 2012
  19. 12/13 wildmatch: make /**/ match zero or more directoriesNguyễn Thái Ngọc Duy, Oct 15, 2012
  20. 13/13 Support "**" wildcard in .gitignore and .gitattributesNguyễn Thái Ngọc Duy, Oct 15, 2012
  21. 14/13 wildmatch: fix tests that fail on Windows due to path manglingJohannes Sixt, Nov 4, 2012
  22. Nguyen Thai Ngoc DuyNov 6, 2012
  23. Johannes SixtNov 7, 2012
  24. 14/13 test-wildmatch: fix tests that fail on Windows due to path manglingNguyễn Thái Ngọc Duy, Nov 11, 2012
  25. 15/13 compat/fnmatch: fix off-by-one character class's length checkNguyễn Thái Ngọc Duy, Nov 11, 2012
  26. Johannes SixtNov 13, 2012
  27. Johannes SixtNov 20, 2012
  28. Junio C HamanoNov 11, 2012
  29. 14/13 test-wildmatch: avoid Windows path manglingNguyễn Thái Ngọc Duy, Nov 13, 2012
  30. Johannes SixtNov 13, 2012
  31. 14/13 test-wildmatch: avoid Windows path manglingJohannes Sixt, Nov 20, 2012
  32. Junio C HamanoNov 20, 2012
  33. 14/13 test-wildmatch: avoid Windows path manglingJohannes Sixt, Nov 21, 2012
  34. 01/12 dir.c: rename cryptic 'which' variable to more consistent nameNguyễn Thái Ngọc Duy, Oct 15, 2012
  35. 02/12 dir.c: rename path_excluded() to is_path_excluded()Nguyễn Thái Ngọc Duy, Oct 15, 2012
  36. 03/12 dir.c: rename excluded_from_list() to is_excluded_from_list()Nguyễn Thái Ngọc Duy, Oct 15, 2012
  37. 04/12 dir.c: rename excluded() to is_excluded()Nguyễn Thái Ngọc Duy, Oct 15, 2012
  38. 05/12 dir.c: refactor is_excluded_from_list()Nguyễn Thái Ngọc Duy, Oct 15, 2012
  39. 06/12 dir.c: refactor is_excluded()Nguyễn Thái Ngọc Duy, Oct 15, 2012
  40. 07/12 dir.c: refactor is_path_excluded()Nguyễn Thái Ngọc Duy, Oct 15, 2012
  41. 08/12 dir.c: keep track of where patterns came fromNguyễn Thái Ngọc Duy, Oct 15, 2012
  42. 09/12 dir.c: refactor treat_gitlinks()Nguyễn Thái Ngọc Duy, Oct 15, 2012
  43. 10/12 pathspec.c: move reusable code from builtin/add.cNguyễn Thái Ngọc Duy, Oct 15, 2012
  44. 11/12 dir.c: provide free_directory() for reclaiming dir_struct memoryNguyễn Thái Ngọc Duy, Oct 15, 2012
  45. 12/12 Add git-check-ignore sub-commandNguyễn Thái Ngọc Duy, Oct 15, 2012
  46. Junio C HamanoOct 15, 2012
  47. Nguyen Thai Ngoc DuyOct 16, 2012
  48. Adam SpiersOct 16, 2012
  49. Nguyen Thai Ngoc DuyOct 16, 2012
  50. Adam SpiersOct 16, 2012
  51. Junio C HamanoOct 16, 2012
  52. Adam SpiersDec 17, 2012
  53. t0007: fix tests on WindowsJohannes Sixt, Nov 4, 2012
  54. Jeff KingNov 8, 2012
  55. Junio C HamanoOct 15, 2012

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.