Re: Should `git remote show` display excluded branches as to-be-fetched?
On Fri, Jun 10, 2022 at 10:08 AM Junio C Hamano <gitster@pobox.com> wrote:
Show 18 quoted lines
>
> Pavel Rappo <pavel.rappo@gmail.com> writes:
>
> > Here's a console session:
> >
> > % git config --get-all remote.jdk19.fetch
> > +refs/heads/*:refs/remotes/jdk19/*
> > ^refs/heads/pr/*
>
> Thanks
>
> "Negative refspecs" is relatively new feature introduced in c0192df6
> (refspec: add support for negative refspecs, 2020-09-30), so it
> would not be so surprising if it still had some surprising behaviour
> ;-)
>
> Jacob, care to take a look?
>
Ok, so this looks like its caused by the fact that get_fetch_map in builtin/remote.c ignores all negative refspecs. I think what we really want to do is check if a given ref matches any negative ref and then maybe move it from the new listing into a separate skipped listing.
Figuring out the best way to do this is a little bit of a challenge. It looks like maybe we need to use one of the functions in remote.c just after the get_fetch_map call in get_ref_states. But exactly what has so far eluded me after a bit of digging.
I'm still looking at this, but help would be appreciated if anyone else has a suggestion.
Thanks, Jake
Show 23 quoted lines
> > % git remote show jdk19
> >
> > * remote jdk19
> > Fetch URL: git@github.com:openjdk/jdk19.git
> > Push URL: git@github.com:openjdk/jdk19.git
> > HEAD branch: master
> > Remote branches:
> > master tracked
> > pr/1 new (next fetch will store in remotes/jdk19)
> > pr/2 new (next fetch will store in remotes/jdk19)
> > pr/3 new (next fetch will store in remotes/jdk19)
> > Local ref configured for 'git push':
> > master pushes to master (fast-forwardable)
> >
> > I would naively expect the pr/1, pr/2, and pr/3 branches to be either:
> >
> > - not displayed, or better
> > - displayed with a hint that they won't be fetched (since they match a
> > _negative_ refspec, which is the second line in the `git config`
> > output above)
> >
> > Thanks,
> > -Pavel