On Mon, Jun 13, 2022 at 4:20 PM Jacob Keller <jacob.keller@xxxxxxxxx> wrote: > > On Fri, Jun 10, 2022 at 10:08 AM Junio C Hamano <gitster@xxxxxxxxx> wrote: > > > > Pavel Rappo <pavel.rappo@xxxxxxxxx> 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 > > > > % git remote show jdk19 > > > > > > * remote jdk19 > > > Fetch URL: git@xxxxxxxxxx:openjdk/jdk19.git > > > Push URL: git@xxxxxxxxxx: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 I found a working solution, but I don't really like the implementation, so perhaps someone with more knowledge of the struct refspec, struct refspec_item, etc would help me figure out if I am doing it in a good way. I just posted it. Thanks, Jake