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

Re: Pathspec does not accept / does not warn for specific pathspecs

From
Junio C Hamano <gitster@pobox.com>
Date
Feb 26, 2021, 23:27 UTC
Message-ID
<xmqqft1iquka.fsf@gitster.g>
In-Reply-To
<CAHMHMxVc8Q1waPQbec-UUN9jcEUgtXOdHymAKigtNj+tc=Wwvg@mail.gmail.com>
Σταύρος Ντέντος  <stdedos@gmail.com> writes:
Show 7 quoted lines
> git archive HEAD -o p.zip --prefix=p/ -- ':!(glob)**/.gitignore'
>
> Which lead to **both of the  .gitignores** to be included. And then I
> was baffled.
> Now I know (I guess) that the pathspec magic was `:!`, and I tried to
> match against a `(glob)**/.gitignore`, i.e. `(glob)*/.gitignore`,
> which, of course, it doesn't exist in any form.
You correctly guessed.

The section on pathspec in "git help glossary" may need to be clarified so that ":!(exclude,glob)" is the right way to spell what you meant, I think.

> And I wonder:
> Why doesn't `git archive ... -- ` understand `:!.gitignore` as a
> .gitignore file would do (minus the `:`)?

At this point, asking "why" is fruitless. They are spelled differently, because pathspecs and .gitignore patterns are simply different.

> Is there some reason that `git archive ... -- ` doesn't understand
> `:!(glob)**/.gitignore`? It doesn't sound awfully complicated, or
> risking a lot of regression (a folder starting with `(`, and
> containing valid pathspec long forms IMHO is rare),

It was probably OK back in 2006 when the number of users and projects that are using Git were smaller, but these days, whatever anybody would think "rare" are used by somebody and it would hurt many people (in absolute terms---they may be a tiny minority of the population) if you make a backward incompatible change that breaks these "rare" cases.

> Is there some reason that `git archive ... -- ` doesn't warn me that
> `:!(glob)**/.gitignore` is invalid (and maybe I meant
> `(exclude,glob)`)?
This one does have merit.  Patches are very much welcomed.
Thanks.
Previous: Σταύρος ΝτέντοςNext: Σταύρος Ντέντος
Message 2 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.