From: Jeff King Date: Wed, 14 Jan 2026 21:11:15 GMT Subject: Re: [BUG] Git push sends too much data unnecessarily Message-ID: <20260114211115.GC1008851@coredump.intra.peff.net> In-Reply-To: On Wed, Jan 14, 2026 at 05:39:43PM +0000, Rajiv Sharma wrote: > > This boils down to how Git negotiates between the client <> server > > I think that's the crux of the problem here. I don't think git > negotiates in the push path the way it does in the read path, i.e. > there is no process of client-server communication that involves > gradually arriving at the common base (in this case it would be C3). > The read path does this quite well (using something akin to a skiplist > IIRC?) and the common base is found in a couple iterations in most > cases. I am unaware of the historical context behind this difference > but I assume the server sending unnecessary extra data during the read > path would be much more expensive than the client doing it hence the > push protocol is kept simpler. > > This kind of negotiation _could_ be added to the push path but it > would be a breaking change. I read somewhere that there were plans for > Push Protocol V2 (in the same vein as Read Protocol V2) so it would be > great to see this improvement making its way there! I think you may have misunderstood Junio's response. We do have push.negotiate already. It's just not the default. Did you try your example with "git -c push.negotiate=true push ..."? -Peff