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

Re: [PATCH 0/6] Introduce pathspec struct

From
Nguyen Thai Ngoc Duy <pclouds@gmail.com>
Date
Sep 28, 2010, 22:31 UTC
Message-ID
<AANLkTinZ=dx1nBXTw0E=nLOmncsgNb7wv1-+ddWzPU+e@mail.gmail.com>
In-Reply-To
<7v7hi6us35.fsf@alter.siamese.dyndns.org>
2010/9/28 Junio C Hamano <gitster@pobox.com>:
Show 10 quoted lines
> Just a couple of quick notes.
>
>  - I had to eject Bo's "log -L range path" series in order to push this
>   out on 'pu' as the range stuff adds new callsites to the old pathspec
>   API.
>
>   This is tentative and does not mean Bo's series is getting rejected;
>   I'd want to get its command line parsing around the pathnames fixed
>   anyway but I suspect the affected codepath would overlap between the
>   two series.  Help is appreciated.
I'll have a look.
Show 8 quoted lines
>  - I do not think either !pattern nor ^pattern is particularly a good way
>   to express negative pathspecs.  My gut feeling is (I have not thought
>   this through nor clearly enough; note the time of this message) that it
>   would be the cleanest at the UI level to introduce negative patterns as
>   arguments to a separate command line flag, e.g.
>
>   $ git log --exclude "Doc*" master..pu -- '*.txt'
>   $ git grep --exclude "t/" -e 'test .*-L' -- '*.sh'

I was writing "but you would lose the ability to mix negative and positive pathspecs together, something like 'exclude Documentation except Documentation/technical'", but then we can have negative excludes too:

$ git log --exclude Documentation --exclude "!Documentation/technical" master..pu -- '*.txt'

does not sound too twisted to understand (I hope).
Show 6 quoted lines
>  - David's "git grep --exclude-dir D" topic should be able to internally
>   use the same negative pathspec mechanism.  At the command line level,
>   it allows (and needs to allow) only the leading prefix (which is how
>   GNU grep's --exclude-dir works), but it makes tons of sense for us to
>   allow "--exclude $pattern" from the command line, and share the
>   mechanism internally between the two.
Yes, eventually. But
 - tree_entry_interesting() needs (a bit complex) rework to have
wildcard matching capability
 - then I am still not sure how negative pathspecs should be done properly

Both may take me weeks to come up with something sensible. If David needs "git grep --exclude-dir" now, he should keep working on builtin/grep.c as he's doing now (maybe change --exclude-dir to --exclude). If my work on negative pathspec has a result, sure I will remove pathspec_matches() from builtin/grep.c, but his work on the command line interface _and tests_ won't be wasted.

-- 
Duy
Previous: Bo YangNext: Junio C Hamano
Message 19 of 22 in “Introduce pathspec struct”
  1. 0/6 Introduce pathspec structNguyễn Thái Ngọc Duy, Sep 19, 2010
  2. 1/6 Add struct pathspecNguyễn Thái Ngọc Duy, Sep 19, 2010
  3. Junio C HamanoSep 27, 2010
  4. yj2133011Sep 29, 2010
  5. 2/6 diff-no-index: use diff_tree_setup_paths()Nguyễn Thái Ngọc Duy, Sep 19, 2010
  6. 3/6 pathspec: cache string length when initialize pathspecNguyễn Thái Ngọc Duy, Sep 19, 2010
  7. Junio C HamanoSep 27, 2010
  8. Nguyen Thai Ngoc DuySep 28, 2010
  9. 4/6 Convert struct diff_options to use struct pathspecNguyễn Thái Ngọc Duy, Sep 19, 2010
  10. Junio C HamanoSep 27, 2010
  11. 5/6 tree_entry_interesting(): remove dependency on struct diff_optionsNguyễn Thái Ngọc Duy, Sep 19, 2010
  12. Junio C HamanoSep 27, 2010
  13. Nguyen Thai Ngoc DuySep 28, 2010
  14. 6/6 Move tree_entry_interesting() to tree-walk.c and export itNguyễn Thái Ngọc Duy, Sep 19, 2010
  15. Elijah NewrenSep 20, 2010
  16. Nguyen Thai Ngoc DuySep 20, 2010
  17. Junio C HamanoSep 28, 2010
  18. Bo YangSep 28, 2010
  19. Nguyen Thai Ngoc DuySep 28, 2010
  20. Junio C HamanoSep 29, 2010
  21. David RiptonSep 28, 2010
  22. Junio C HamanoSep 29, 2010

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.