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

Re: [PATCH] Clear --exclude list after 'git rev-parse --all'

From
Jeff King <peff@peff.net>
Date
Oct 25, 2018, 10:45 UTC
Message-ID
<20181025104542.GA14455@sigill.intra.peff.net>
In-Reply-To
<CAHc6FU5CpBNpzfPs0hkNm9Hw1iYnALvUY4WL1z=sPVT10fq+zw@mail.gmail.com>
On Wed, Oct 24, 2018 at 11:49:06AM +0200, Andreas Gruenbacher wrote:
Show 22 quoted lines
> > That is why I asked what "problem" this patch fixes.  Without
> > answering that question, it is unclear if the patch is completing
> > missing coverage for "--all", or it is cargo culting an useless
> > clearing done for "--glob" and friends to code for "--all" that did
> > not do the same useless clearing.
> 
> This is how the --exclude option is described:
> 
>        --exclude=<glob-pattern>
>            Do not include refs matching <glob-pattern> that the next
> --all, --branches,
>            --tags, --remotes, or --glob would otherwise consider.
> Repetitions of this
>            option accumulate exclusion patterns up to the next --all,
> --branches, --tags,
>            --remotes, or --glob option (other options or arguments do not clear
>            accumulated patterns).
> 
> I'm assuming that some thought has gone into making the options behave
> in this particular way. The implementation in revision.c follows this
> pattern, but the implementation in builtin/rev-parse.c only almost
> does.

Yeah. I think this is just a bug in 9dc01bf063 (rev-parse: introduce --exclude=<glob> to tame wildcards, 2013-11-01), in that it's handling of --all differed from e7b432c521 (revision: introduce --exclude=<glob> to tame wildcards, 2013-08-30). The clearing is very much intentional and documented, and in general rev-parse should behave the same as rev-list.

An easy test is:
  $ git rev-list --no-walk --exclude='*' --all --all
  3289ca716320457af5d2dd550b716282ad22da11
  ...a bunch of other tip commits...
  $ git rev-parse --exclude='*' --all --all
  [no output, but it should print those same tip commits]
-Peff
Previous: Andreas GruenbacherNext: Junio C Hamano
Message 6 of 10 in “Clear --exclude list after 'git rev-parse --all'”
  1. Clear --exclude list after 'git rev-parse --all'Andreas Gruenbacher, Oct 23, 2018
  2. Junio C HamanoOct 24, 2018
  3. Andreas GruenbacherOct 24, 2018
  4. Junio C HamanoOct 24, 2018
  5. Andreas GruenbacherOct 24, 2018
  6. Jeff KingOct 25, 2018
  7. Junio C HamanoOct 25, 2018
  8. Jeff KingOct 26, 2018
  9. Junio C HamanoOct 27, 2018
  10. Jeff KingOct 27, 2018

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.