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

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

From
Junio C Hamano <gitster@pobox.com>
Date
Oct 16, 2012, 16:12 UTC
Message-ID
<7vmwzmtmyd.fsf@alter.siamese.dyndns.org>
In-Reply-To
<CAOkDyE9g6rNiv7nnTu2i34dbn_z7r5SmhDuxief7iEQLVxtO5g@mail.gmail.com>
Adam Spiers <git@adamspiers.org> writes:
Show 40 quoted lines
> On Mon, Oct 15, 2012 at 3:31 PM, Junio C Hamano <gitster@pobox.com> wrote:
>> 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.
>
>> 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/ ?
I think this is sufficient:
	For each pathname given via the command-line or from a file
	via `--stdin`, show the pattern from .gitignore (or other
	input files to the exclude mechanism) that decides if the
	pathname is excluded.
and without "Note that" at all.
Previous: Adam SpiersNext: Adam Spiers
Message 51 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.