Re: [BUG] Git push sends too much data unnecessarily
- From
Jeff King <peff@peff.net>
- Date
- Jan 14, 2026, 21:11 UTC
- Message-ID
- <20260114211115.GC1008851@coredump.intra.peff.net>
- In-Reply-To
- <CAGe2LO3t3B1g1ARH-LQ9V0UoGmToO-Z9XYpeMOTKkaSQvCpaRA@mail.gmail.com>
On Wed, Jan 14, 2026 at 05:39:43PM +0000, Rajiv Sharma wrote:
Show 17 quoted lines
> > 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