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

Re: [RFC PATCH v1 1/2] pathspec: warn: long and short forms are incompatible

From
SNStavros Ntentos <stdedos@gmail.com>
Date
Mar 28, 2021, 15:44 UTC
Message-ID
<20210328154432.23434-1-133706+stdedos@users.noreply.github.com>
In-Reply-To
<xmqqa6qoqw9n.fsf@gitster.g>
Junio C Hamano <gitster@pobox.com> writes:
Show 10 quoted lines
> Jeff King <peff@peff.net> writes:
>
> > It also feels like any checks like this should be relying on the
> > existing pathspec-magic parser a bit more. I don't know the pathspec
> > code that well, but surely at some point it has a notion of which parts
> > are magic flags (e.g., after parse_element_magic in init_pathspec_item).
>
> Absolutely.  parse_element_magic() decides, by looking at the
> character after the initial ':', the we are looking at the longhand
> form when magic sequence is introduced by ":(".

Absolutely from me too! I would want to re-use more of the existing code. In response to that, patch https://lore.kernel.org/git/20210328152629.16486-1-133706+stdedos@users.noreply.github.com/ clearly shows that it is possible to re-use the de-facto long form magic parsing code to attempt to parse the string that continues as a long form magic.

This could theoretically pave the road for mixed short/long form parsing (in that order), if would be so desired.

However, as probably suspected, it suffers from one big problem:
	if (ARRAY_SIZE(pathspec_magic) <= i)
		die(_("Invalid pathspec magic '%.*s' in '%s'"),
		    (int) len, pos, elem);
which is an unconditional `exit(128)`.

I don't know if it's possible to rescue (or redirect) that `die` call. In any case, considering that, this again deviates from the "small informative" change this commit was supposed to be.

Having said that, I have cooked a working patch with the proposed code.
Previous: Junio C HamanoNext: Σταύρος Ντέντος
Message 28 of 43 in “Pathspec does not accept / does not warn for specific pathspecs”
  1. Σταύρος ΝτέντοςFeb 26, 2021
  2. Junio C HamanoFeb 26, 2021
  3. 0/1 pathspec: warn for a no-glob entry that contains `**`Σταύρος Ντέντος, Mar 25, 2021
  4. 1/1 pathspec: warn for a no-glob entry that contains `**`Σταύρος Ντέντος, Mar 25, 2021
  5. Bagas SanjayaMar 25, 2021
  6. Bagas SanjayaMar 25, 2021
  7. 1/1 pathspec: warn for a no-glob entry that contains `**`Stavros Ntentos, Mar 25, 2021
  8. Junio C HamanoMar 25, 2021
  9. 0/1 pathspec: warn for a no-glob entry that contains `**`Σταύρος Ντέντος, Mar 25, 2021
  10. 1/1 pathspec: warn for a no-glob entry that contains `**`Σταύρος Ντέντος, Mar 25, 2021
  11. Junio C HamanoMar 26, 2021
  12. Eric SunshineMar 26, 2021
  13. Junio C HamanoMar 26, 2021
  14. Jeff KingMar 26, 2021
  15. Stavros NtentosMar 26, 2021
  16. 1/2 pathspec: warn for a no-glob entry that contains `**`Stavros Ntentos, Mar 26, 2021
  17. 2/2 pathspec: convert no-glob warn to adviceStavros Ntentos, Mar 26, 2021
  18. 0/1 pathspec: warn: long and short forms are incompatibleΣταύρος Ντέντος, Mar 26, 2021
  19. 2/2 fixup! pathspec: warn: long and short forms are incompatibleΣταύρος Ντέντος, Mar 26, 2021
  20. Bagas SanjayaMar 26, 2021
  21. Stavros NtentosMar 26, 2021
  22. 3/3 squash! fixup! pathspec: warn: long and short forms are incompatibleStavros Ntentos, Mar 28, 2021
  23. 1/2 pathspec: warn: long and short forms are incompatibleΣταύρος Ντέντος, Mar 26, 2021
  24. Jeff KingMar 26, 2021
  25. Stavros NtentosMar 26, 2021
  26. Jeff KingMar 27, 2021
  27. Junio C HamanoMar 27, 2021
  28. Stavros NtentosMar 28, 2021
  29. 0/1 pathspec: warn: long and short forms are incompatibleΣταύρος Ντέντος, Mar 26, 2021
  30. pathspec: warn: long and short forms are incompatibleΣταύρος Ντέντος, Mar 26, 2021
  31. pathspec: advice: long and short forms are incompatibleStavros Ntentos, Apr 3, 2021
  32. Junio C HamanoApr 4, 2021
  33. Σταύρος ΝτέντοςApr 11, 2021
  34. Junio C HamanoApr 11, 2021
  35. Σταύρος ΝτέντοςApr 11, 2021
  36. pathspec: advice: long and short forms are incompatibleStavros Ntentos, Mar 28, 2021
  37. Junio C HamanoMar 28, 2021
  38. Junio C HamanoMar 30, 2021
  39. Stavros NtentosMar 30, 2021
  40. Stavros NtentosMar 30, 2021
  41. Junio C HamanoMar 30, 2021
  42. pathspec: advice: long and short forms are incompatibleStavros Ntentos, Apr 3, 2021
  43. pathspec: advice: long and short forms are incompatibleStavros Ntentos, Apr 3, 2021

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.