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

Re: [PATCH] match_push_refs(): nobody sets src->peer_ref anymore

From
Jeff King <peff@peff.net>
Date
Mar 5, 2013, 05:45 UTC
Message-ID
<20130305054456.GA12446@sigill.intra.peff.net>
In-Reply-To
<7vlia2x05q.fsf@alter.siamese.dyndns.org>
On Mon, Mar 04, 2013 at 02:36:33PM -0800, Junio C Hamano wrote:
Show 15 quoted lines
> In ancient times, we used to disallow the same source ref to be
> pushed to more than one places, e.g. "git push there master:master
> master:naster" was disallowed.  We later lifted this restriction
> with db27ee63929f (send-pack: allow the same source to be pushed
> more than once., 2005-08-06) and there no longer is anybody that
> sets peer_ref for the source side of the ref list in the push
> codepath since then.
> 
> Remove one leftover no-op in a loop that iterates over the source
> side of ref list (i.e. our local ref) to see if it can/should be
> sent to a matching destination ref while skipping ones that is
> marked with peer_ref (which will never exist, so we do not skip
> anything).
> 
> Signed-off-by: Junio C Hamano <gitster@pobox.com>

This looks good to me. I was curious how difficult it would be to verify the "no longer is anybody that sets peer_ref" claim. It's actually quite easy. All of the call-sites just feed the result of get_local_heads(), which is easy to verify does not ever set peer_ref. Looking at the current code, I think you could even drop the "src" parameter and just have match_push_refs call get_local_heads() itself, though that does feel like a step backwards in terms of function generality.

As an aside, I have always found the embedded "next" and "peer_ref" pointers in "struct ref" to be hacky. They are not properties of the ref at all, and the "refs to fetch" list would be more logically represented as a list of pairs of refs (and then I would not have to ever remember whether the peer is the local or remote ref in a given case). Probably not worth worrying about at this point, though, as the code fallout would be significant for little gain.

-Peff
Previous: Junio C Hamano
Message 2 of 2 in “match_push_refs(): nobody sets src->peer_ref anymore”
  1. match_push_refs(): nobody sets src->peer_ref anymoreJunio C Hamano, Mar 4, 2013
  2. Jeff KingMar 5, 2013

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.