Subject: Re: [RFC PATCH 1/1] filter-options: Expand abbreviated numbers

From: Josh Steadmon <[email-masked]>
Date: Mon, 7 Jan 2019 13:25:17 -0800

On 2019.01.02 15:15, Junio C Hamano wrote:
> Josh Steadmon <[email-masked]> writes:
> 
> > When communicating with a remote server or a subprocess, use expanded
> > numbers rather than abbreviated numbers in the object filter spec (e.g.
> > "limit:blob=1k" becomes "limit:blob=1024").
> >
> > Update the protocol docs to note that clients should always perform this
> > expansion, to allow for more compatibility between server
> > implementations.
> >
> > Signed-off-by: Josh Steadmon <[email-masked]>
> > ---
> >  Documentation/technical/protocol-v2.txt |  5 ++++-
> >  builtin/clone.c                         |  6 +++++-
> >  builtin/fetch.c                         |  7 ++++++-
> >  fetch-pack.c                            | 15 ++++++++++++---
> >  list-objects-filter-options.c           | 20 ++++++++++++++++++--
> >  list-objects-filter-options.h           | 17 +++++++++++++++--
> >  t/t6112-rev-list-filters-objects.sh     | 17 +++++++++++++++++
> >  transport-helper.c                      | 13 +++++++++----
> >  upload-pack.c                           |  7 +++++--
> >  9 files changed, 91 insertions(+), 16 deletions(-)
> >
> > diff --git a/Documentation/technical/protocol-v2.txt b/Documentation/technical/protocol-v2.txt
> > index 09e4e0273f..d001372404 100644
> > --- a/Documentation/technical/protocol-v2.txt
> > +++ b/Documentation/technical/protocol-v2.txt
> > @@ -296,7 +296,10 @@ included in the client's request:
> >  	Request that various objects from the packfile be omitted
> >  	using one of several filtering techniques. These are intended
> >  	for use with partial clone and partial fetch operations. See
> > -	`rev-list` for possible "filter-spec" values.
> > +	`rev-list` for possible "filter-spec" values. Clients MUST
> > +	translate abbreviated numbers (e.g. "1k") into fully-expanded
> > +	numbers (e.g. "1024") on the client side, so that the server
> > +	does not need to implement unit parsing.
> 
> I suspect that it is too late now to retroactively say "MUST" here.
> The best we may be able to do is to say "The sender SHOULD send a
> plain integer without unit and the receiver SHOULD be prepared to
> scale an integer with unit".
> 

In that case, do you think we should also specify that units should be
interpreted as powers-of-2 rather than powers-of-10?