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

Re: [PATCH/alternative/raw and rough] setup.c: denote repo wide pathspecs by ':'

From
Michael J Gruber <git@drmicha.warpmail.net>
Date
Mar 3, 2011, 08:20 UTC
Message-ID
<4D6F4F32.60108@drmicha.warpmail.net>
In-Reply-To
<4D6F0E89.4020200@cisco.com>
Phil Hord venit, vidit, dixit 03.03.2011 04:44:
Show 33 quoted lines
> On 03/02/2011 11:53 AM, Junio C Hamano wrote:
>> Michael J Gruber <git@drmicha.warpmail.net> writes:
>>> [*] I keep forgetting that some people may have files whose names begin
>>> with ":". They are ambiguous now already with "treeish pathspec"
>>> commands, but not with "pathspec" commands. The latter would change.
>> Just to make sure I understand that they have easy workarounds:
>>
>>  - If you have a path foo/:bar, you can say
>>
>>    git log master -- foo/:bar
>>
>>    because ':' signals the magic and gets stripped only when it is at the
>>    beginning (i.e. not affecting foo/:bar); and
>>
>>  - For :boz at the root level, you can say
>>
>>    git log master -- '\:boz'
>>
>>    because the backslash in '\:boz' makes the colon not at the beginning and
>>    the glob match sees '\:boz' and then matches '\:' with literal ':' at the
>>    beginning of the pathname ":boz".
> 
> Easy workaround, maybe, but still a potential problem for unsuspecting
> scripts.
> 
>   - I think this fails in a directory with :foo.c
> 
>     git log master -- *.c
> 
> 
>   - Would this work, though?
> 
>     git log master -- "*.c"

I hope you are aware that these two are completely different before my patch already, are you?

The second one will match ":foo.c" and any other .c-file at cwd in any commit in master (which changes it), of course. No ambiguity here. This is almost always what you want.

The first one would match ":foo.c" and any other .c file which you currently have at cwd in your working tree (!), before my patch (unless you don't have any in your wt), and is almost never what you want.

After my patch, it would interpret the ":foo.c" which the shell glob expands to differently. That is exactly the ambiguity that I mentioned.

Michael
Previous: Phil HordNext: Phil Hord
Message 33 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.