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

Re: [PATCH] pathspec: reserve some letters after a colon pathspec

From
Junio C Hamano <gitster@pobox.com>
Date
Mar 24, 2011, 14:46 UTC
Message-ID
<7vei5wa84e.fsf@alter.siamese.dyndns.org>
In-Reply-To
<4D8AEF9B.9050001@drmicha.warpmail.net>
Michael J Gruber <git@drmicha.warpmail.net> writes:
Show 44 quoted lines
> Junio C Hamano venit, vidit, dixit 23.03.2011 19:04:
> ...
>> Here is a weather-baloon.  I will use colon below as the magic introducer,
>> as I don't care very deeply about the choice of it.
>> 
>>  - "^:([^\w\d]+)(.*)$", that is "a magic introducer followed by a sequence
>>    of non-alnum followed by the remainder" means that the part that is
>>    given to the matching engine is $2, and each gibberish character in $1
>>    determines what magic is requested when the matching engine does its
>>    work.  Among the gibberish that can be in $1, we currently would want
>>    to support:
>> 
>>     . '/' denotes that $2 is relative to root of the working tree, i.e. do
>>       not add 'prefix' to it at the left.
>> 
>>     . '!' denotes that the matching with $2 should not honor globbing.
>> 
>>    e.g.
>> 
>>     ":/*lib/**/foo.h", if '*' denoted recursive glob support for '**/' to
>>     mean "zero-or-more levels of any directory" [*1*], it would find any
>>     foo.h in a directory 'lib' or its subdirectory that is found in
>>     anywhere in the working tree.
>> 
>>  - "^:((?:[-a-z]+)(?:,[-a-z+]+)*):(.*)$", that is "a magic introducer,
>>    followed by one or more alpha-string separated with comma, followed
>>    by a magic terminator, and the remainder" means that the remainder is
>>    what is given to the matching engine, and the alpha-strings spell out
>>    the name of the magic.  We currently would want to support:
>> 
>>     . 'full-tree' means exactly the same as '/' mnemonic above.
>>     . 'noglob' means exactly the same as '!' mnemonic.
>> 
>>    e.g.
>> 
>>    ":full-tree,recursive-glob:lib/**/foo.h" would be how you fully spell
>>    the above example in the mnemonic section [*2*].
>
> I like this a lot, especially the fact that we would have descriptive
> long names as well as short versions for a subset! Two remarks:
>
> :(symlink|submodule|directory|file): would fit into that scheme (for use
> in .gitattributes), though I'm not sure we want that for general
> pathspecs.

I do not offhand think it is a good idea. While traversing history the pathspec matcher often does not have the mode information extracted from the tree object in the codepath it inspects the name, so it would be very costly, I don't think it would particularly be useful, and pathspec is about names and not about types.

A magic that says "please match case insensitively", so that we do not have to write "git log -- '[Rr][Ee][Aa][Dd][Mm][Ee]'" would be very useful. Perhaps "gibberish" is not a good long term solution after all, as a natural short-hand for that magic would be a single letter 'i' somewhere, similar to (?i) in pcre.

Previous: Junio C Hamano
Message 46 of 46 in “git-grep to operate across who repository and not just CWD?”
  1. David ChantersFeb 28, 2011
  2. Michael J GruberFeb 28, 2011
  3. Jay SoffianFeb 28, 2011
  4. Junio C HamanoFeb 28, 2011
  5. Junio C HamanoFeb 28, 2011
  6. Phil HordFeb 28, 2011
  7. Michael J GruberMar 1, 2011
  8. Nguyen Thai Ngoc DuyMar 1, 2011
  9. Michael J GruberMar 1, 2011
  10. Nguyen Thai Ngoc DuyMar 1, 2011
  11. Nguyen Thai Ngoc DuyMar 1, 2011
  12. 0/2 grep --full-treeMichael J Gruber, Mar 1, 2011
  13. 1/2 grep: --full-treeMichael J Gruber, Mar 1, 2011
  14. 2/2 grep: make --full-tree work with pathspecsMichael J Gruber, Mar 1, 2011
  15. Junio C HamanoMar 1, 2011
  16. setup.c: denote repo wide pathspecs by ':'Michael J Gruber, Mar 1, 2011
  17. Nguyen Thai Ngoc DuyMar 1, 2011
  18. Michael J GruberMar 1, 2011
  19. Nguyen Thai Ngoc DuyMar 1, 2011
  20. Michael J GruberMar 1, 2011
  21. Nguyen Thai Ngoc DuyMar 1, 2011
  22. Junio C HamanoMar 1, 2011
  23. Michael J GruberMar 1, 2011
  24. Junio C HamanoMar 1, 2011
  25. Sverre RabbelierMar 2, 2011
  26. Nguyen Thai Ngoc DuyMar 2, 2011
  27. Michael J GruberMar 2, 2011
  28. Junio C HamanoMar 2, 2011
  29. Michael J GruberMar 2, 2011
  30. Miles BaderMar 3, 2011
  31. Junio C HamanoMar 3, 2011
  32. Phil HordMar 3, 2011
  33. Michael J GruberMar 3, 2011
  34. Phil HordMar 1, 2011
  35. James PickensMar 1, 2011
  36. Nguyen Thai Ngoc DuyMar 2, 2011
  37. Phil HordMar 3, 2011
  38. Michael J GruberMar 3, 2011
  39. Michael J GruberMar 1, 2011
  40. Phil HordMar 1, 2011
  41. pathspec: reserve some letters after a colon pathspecNguyễn Thái Ngọc Duy, Mar 23, 2011
  42. Junio C HamanoMar 23, 2011
  43. Michael J GruberMar 24, 2011
  44. Nguyen Thai Ngoc DuyMar 24, 2011
  45. Junio C HamanoMar 24, 2011
  46. Junio C HamanoMar 24, 2011

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.