On Fri, Aug 21, 2020 at 11:21:19AM -0700, Jacob Keller wrote: > > I also tried adding a test for fetch --prune, but that ultimately > > calls query_refspecs_multiple and query_refspecs. I need to figure out > > how negative refspecs need to interact with that function still. > > So there's an interesting problem here... query_refspecs_multiple > takes only the destination name, which makes the "get_stale_heads" not > work properly, since for fetch we want to apply the refspec to the > remote sides "source". Hmm. So if I understand it, that function is asking about _local_ refs, and wondering "if we were to fetch using these refspecs, would we write to this ref". We know that negative refspecs can't impact the mapping of remote to local. But I guess the case you are about is: git fetch --prune refs/heads/*:refs/remotes/origin/* ^refs/heads/foo where we need to realize that the local refs/remotes/origin/foo needs to be saved. I think that should be possible by reverse-applying the transformations from any positive refspecs, and then seeing if they match any negative ones. I don't know how much support the existing code will give you for that, though. -Peff