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

Re: [PATCH v3] push: respect --no-thin

From
Junio C Hamano <gitster@pobox.com>
Date
Aug 12, 2013, 05:59 UTC
Message-ID
<7vhaev1mao.fsf@alter.siamese.dyndns.org>
In-Reply-To
<1376211178-17444-1-git-send-email-pclouds@gmail.com>
Nguyễn Thái Ngọc Duy  <pclouds@gmail.com> writes:
Show 6 quoted lines
> Over the time the default value for --thin has been switched between
> on and off. As of now it's always on, even if --no-thin is given.
> Correct the code to respect --no-thin.
>
> receive-pack learns about --no-thin only for testing purposes, hence
> no document update.

Please name it "--reject-thin-pack-for-testing" to make it crystal clear that a documentation patch to "document undocumented option" is unwanted.

Show 23 quoted lines
> diff --git a/builtin/push.c b/builtin/push.c
> index 04f0eaf..333a1fb 100644
> --- a/builtin/push.c
> +++ b/builtin/push.c
> @@ -15,7 +15,7 @@ static const char * const push_usage[] = {
>  	NULL,
>  };
>  
> -static int thin;
> +static int thin = 1;
>  static int deleterefs;
>  static const char *receivepack;
>  static int verbosity;
> @@ -313,8 +313,7 @@ static int push_with_options(struct transport *transport, int flags)
>  	if (receivepack)
>  		transport_set_option(transport,
>  				     TRANS_OPT_RECEIVEPACK, receivepack);
> -	if (thin)
> -		transport_set_option(transport, TRANS_OPT_THIN, "yes");
> +	transport_set_option(transport, TRANS_OPT_THIN, thin ? "yes" : NULL);
>  
>  	if (verbosity > 0)
>  		fprintf(stderr, _("Pushing to %s\n"), transport->url);
Hmm, I am utterly confused.

How does the original code have thin as an non-overridable default? The variable is initialized to 0, parse-options specifies it as OPT_BOOLEAN, and TRANS_OPT_THIN is set only if "thin" is set.

Updated code flips the default to "1" but unconditionally uses TRANS_OPT_THIN to set it to either "yes" or NULL. While it is not wrong per-se, do_push() (i.e. the caller of this function) grabs the transport from transport_get() which initializes the transport with the thin option disabled by default, so it is not immediately obvious to me why "always call TRANS_OPT_THIN but set it explicitly to NULL when --no-thin is asked" is necessary or improvement.

Puzzled....
Previous: Nguyễn Thái Ngọc DuyNext: Duy Nguyen
Message 7 of 10 in “push: respect --no-thin”
  1. push: respect --no-thinNguyễn Thái Ngọc Duy, Aug 10, 2013
  2. Jeff KingAug 10, 2013
  3. Duy NguyenAug 10, 2013
  4. push: respect --no-thinNguyễn Thái Ngọc Duy, Aug 11, 2013
  5. Eric SunshineAug 11, 2013
  6. push: respect --no-thinNguyễn Thái Ngọc Duy, Aug 11, 2013
  7. Junio C HamanoAug 12, 2013
  8. Duy NguyenAug 12, 2013
  9. Junio C HamanoAug 13, 2013
  10. push: respect --no-thinNguyễn Thái Ngọc Duy, Aug 12, 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.