[PATCH 4 of 5] push: send highest changegroup format supported by both side

Gregory Szorc gregory.szorc at gmail.com
Tue Nov 4 10:55:09 CST 2014


On 11/4/14 6:20 AM, Pierre-Yves David wrote:
> # HG changeset patch
> # User Pierre-Yves David <pierre-yves.david at fb.com>
> # Date 1413573564 25200
> #      Fri Oct 17 12:19:24 2014 -0700
> # Node ID 7407e3ea154921922956cbaf2e7ff0d89d48634c
> # Parent  514f8b2f466377bca8eea987c67e33eb415586e9
> push: send highest changegroup format supported by both side
>
> When using bundle2, we find the common subset of supported changegroup-packers
> and we pick the max of them. This allow to use generaldelta aware changegroups through
> bundle2.

I like what this series (and the already queued one before it) are 
trying to do (protocol negotiation). But I'm a bit concerned about using 
plain integers for protocol negotiation.

Is this integer just encompassing the wire/bundle protocol? Or does it 
extend to more, such as encoding formats (classic vs generaldelta) and 
compression formats (raw, gzip, bz2, lz4, etc)? If it is just the 
former, +1. But if version N also implies things beyond the wire 
protocol (e.g. use of generaldelta), then I have strong objections to 
using simple integer comparison for ranking preferences, as I think 
there are too many combinations to express preferences in a shared 
numeric list.

My apologies for not fully grasping the full plan here.


More information about the Mercurial-devel mailing list