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

Re: [PATCH 0/9] magic pathspec updates

From
Junio C Hamano <gitster@pobox.com>
Date
May 10, 2011, 17:07 UTC
Message-ID
<7vvcxijxhi.fsf@alter.siamese.dyndns.org>
In-Reply-To
<BANLkTimLsNU0rLHRxxPmzFH_-1U5m3GoCw@mail.gmail.com>
Nguyen Thai Ngoc Duy <pclouds@gmail.com> writes:
Show 13 quoted lines
> On Tue, May 10, 2011 at 12:51 PM, Junio C Hamano <gitster@pobox.com> wrote:
>> This is a series to update the magic pathspec topic, primarily the area
>> around the empty ':' pathspec.
>
> I think you missed git-commit and git-reset. "git commit --include :"
> may get past parse_and_validate_options() (ie. not dying) but later on
> in prepare_index(), there's no pathspec. I did not check very careful
> though.
>
>> Other than that, I think the current code is probably more or less safe to
>> dogfood with known rough edges.
>
> Agreed.

After re-reading the series one more time (including the ones that are already in next), I think teaching get_pathspec() about a lone ":" was probably a bad idea. The only reason we might want to say "there is no pathspec whatsoever" is when a command wants to limit its operation to the current subdirectory and it changes behaviour when run at the root level with and without pathspec (e.g. history simplification).

Note that no such command exists in our vocabulary today, so you need to imagine "git local-log" that acts like "git log" but by default shows history simplified to explain only the subdirectory you are currently in, or something.

Such an application can easily notice that argv[] has only a lone ":" left and do the same thing it does when there is no pathspec, without affecting other (existing) users of get_pathspec().

But the thing is, we do not have such an application like "local-log" now, we know we can easily support such commands when needed without teaching get_pathspec() about a lone ":", and we can be sure that existing commands that know get_pathspec() will never give them an empty pathspec if they feed a non-empty argv[] will not be broken by not teaching get_pathspec() about a lone ":".

I am leaning toward ripping the lone ":" support from the code in "next". I would also remove ":(icase)" from "next". It was only meant to be a POC to show how far we could go only by futzing get_pathspec() function, and was never meant to be a serious implementation of the feature. It should be re-done after we do deeper conversion and use the "struct pathspec" interface not "char **" interface.

Previous: Nguyen Thai Ngoc DuyNext: Nguyen Thai Ngoc Duy
Message 27 of 28 in “t3703: add test cases for pathspec magic”
  1. t3703: add test cases for pathspec magicNguyễn Thái Ngọc Duy, May 7, 2011
  2. Junio C HamanoMay 7, 2011
  3. Nguyen Thai Ngoc DuyMay 8, 2011
  4. t3703, t4208: add test cases for magic pathspecNguyễn Thái Ngọc Duy, May 8, 2011
  5. Junio C HamanoMay 8, 2011
  6. Nguyen Thai Ngoc DuyMay 9, 2011
  7. Junio C HamanoMay 9, 2011
  8. Junio C HamanoMay 9, 2011
  9. 0/9 magic pathspec updatesJunio C Hamano, May 10, 2011
  10. 1/9 grep: use get_pathspec() correctlyJunio C Hamano, May 10, 2011
  11. 2/9 get_pathspec(): an empty ':' pathspec should stand aloneJunio C Hamano, May 10, 2011
  12. 3/9 count_pathspec(): return number of elements in pathspecJunio C Hamano, May 10, 2011
  13. Nguyen Thai Ngoc DuyMay 10, 2011
  14. 4/9 add ":" is a pathspec that is too wideJunio C Hamano, May 10, 2011
  15. 5/9 git rm ":" is like specifying nothingJunio C Hamano, May 10, 2011
  16. 6/9 clean ":" is like specifying nothingJunio C Hamano, May 10, 2011
  17. Thiago FarinaMay 10, 2011
  18. 7/9 mv ":" ":" is like moving nothing from nowhere to nowhereJunio C Hamano, May 10, 2011
  19. Nguyen Thai Ngoc DuyMay 10, 2011
  20. 8/9 checkout ":" is not giving any pathspecJunio C Hamano, May 10, 2011
  21. 9/9 t3703, t4208: add test cases for magic pathspecJunio C Hamano, May 10, 2011
  22. t3703: Skip tests using directory name ":" on WindowsJohannes Sixt, May 12, 2011
  23. Ævar Arnfjörð BjarmasonMay 29, 2011
  24. Junio C HamanoMay 29, 2011
  25. Ævar Arnfjörð BjarmasonMay 29, 2011
  26. Nguyen Thai Ngoc DuyMay 10, 2011
  27. Junio C HamanoMay 10, 2011
  28. Nguyen Thai Ngoc DuyMay 11, 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.