git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Fredrik Medley <fredrik.medley@gmail.com>
Cc: git@vger.kernel.org,
	Christian Halstrick <christian.halstrick@gmail.com>,
	Dan Johnson <computerdruid@gmail.com>, Jeff King <peff@peff.net>,
	Jonathan Nieder <jrnieder@gmail.com>,
	Duy Nguyen <pclouds@gmail.com>
Subject: Re: [PATCH 2/3] upload-pack: Prepare to extend allow-tip-sha1-in-want
Date: Tue, 12 May 2015 14:39:01 -0700	[thread overview]
Message-ID: <xmqqmw19earu.fsf@gitster.dls.corp.google.com> (raw)
In-Reply-To: <1431465265-18486-2-git-send-email-fredrik.medley@gmail.com> (Fredrik Medley's message of "Tue, 12 May 2015 23:14:24 +0200")

Fredrik Medley <fredrik.medley@gmail.com> writes:

> Subject: Re: [PATCH 2/3] upload-pack: Prepare to extend allow-tip-sha1-in-want

s/: Prepare/: prepare/;

> Rename the allow_tip_sha1_in_want variable to
> allow_request_with_bare_object_name to allow for future extensions, e.g.
> allowing non-tip sha1.
> ---

Sign-off?

>  fetch-pack.c  |  9 ++++++---
>  upload-pack.c | 18 +++++++++++-------
>  2 files changed, 17 insertions(+), 10 deletions(-)
>
> diff --git a/fetch-pack.c b/fetch-pack.c
> index 48526aa..77174f9 100644
> --- a/fetch-pack.c
> +++ b/fetch-pack.c
> @@ -43,7 +43,10 @@ static int marked;
>  #define MAX_IN_VAIN 256
>  
>  static struct prio_queue rev_list = { compare_commits_by_commit_date };
> -static int non_common_revs, multi_ack, use_sideband, allow_tip_sha1_in_want;
> +static int non_common_revs, multi_ack, use_sideband;
> +/* Allow specifying sha1 if it is a ref tip. */
> +#define ALLOW_TIP	01
> +static int allow_request_with_bare_object_name;

This side is OK, as "request" is by the end user giving the object
name from its command line.

> diff --git a/upload-pack.c b/upload-pack.c
> index aa84576..708a502 100644
> --- a/upload-pack.c
> +++ b/upload-pack.c
> @@ -35,7 +35,9 @@ static int multi_ack;
>  static int no_done;
>  static int use_thin_pack, use_ofs_delta, use_include_tag;
>  static int no_progress, daemon_mode;
> -static int allow_tip_sha1_in_want;
> +/* Allow specifying sha1 if it is a ref tip. */
> +#define ALLOW_TIP	01
> +static int allow_request_with_bare_object_name;

This side is not quite good, as the request coming over wire is
always 40-hex bare object name.  We are allowing requests against
what we did not advertise (either the tip of hidden refs, or
somewhere deep in the history from some tip that may or may not have
been advertised).

allow-unadvertised-object-request or something, perhaps?

>  static int shallow_nr;
>  static struct object_array have_obj;
>  static struct object_array want_obj;
> @@ -442,8 +444,8 @@ static int get_common_commits(void)
>  
>  static int is_our_ref(struct object *o)
>  {
> -	return o->flags &
> -		((allow_tip_sha1_in_want ? HIDDEN_REF : 0) | OUR_REF);
> +	int allow_hidden_ref = (allow_request_with_bare_object_name & ALLOW_TIP);
> +	return o->flags & ((allow_hidden_ref ? HIDDEN_REF : 0) | OUR_REF);
>  }
>  
>  static void check_non_tip(void)
> @@ -727,7 +729,8 @@ static int send_ref(const char *refname, const unsigned char *sha1, int flag, vo
>  		packet_write(1, "%s %s%c%s%s%s%s agent=%s\n",
>  			     sha1_to_hex(sha1), refname_nons,
>  			     0, capabilities,
> -			     allow_tip_sha1_in_want ? " allow-tip-sha1-in-want" : "",
> +			     (allow_request_with_bare_object_name & ALLOW_TIP) ?
> +				     " allow-tip-sha1-in-want" : "",
>  			     stateless_rpc ? " no-done" : "",
>  			     symref_info.buf,
>  			     git_user_agent_sanitized());
> @@ -787,9 +790,10 @@ static void upload_pack(void)
>  
>  static int upload_pack_config(const char *var, const char *value, void *unused)
>  {
> -	if (!strcmp("uploadpack.allowtipsha1inwant", var))
> -		allow_tip_sha1_in_want = git_config_bool(var, value);
> -	else if (!strcmp("uploadpack.keepalive", var)) {
> +	if (!strcmp("uploadpack.allowtipsha1inwant", var)) {
> +		if (git_config_bool(var, value))
> +			allow_request_with_bare_object_name |= ALLOW_TIP;
> +	} else if (!strcmp("uploadpack.keepalive", var)) {
>  		keepalive = git_config_int(var, value);
>  		if (!keepalive)
>  			keepalive = -1;

  parent reply	other threads:[~2015-05-12 21:39 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-02 22:01 [PATCH] upload-pack: Optionally allow fetching reachable sha1 Fredrik Medley
2015-05-03 17:40 ` Junio C Hamano
2015-05-03 20:13   ` Fredrik Medley
2015-05-03 21:35     ` Eric Sunshine
2015-05-05 21:21 ` [PATCH v2] " Fredrik Medley
2015-05-05 22:16   ` Junio C Hamano
2015-05-06 20:10     ` Fredrik Medley
2015-05-06 20:19       ` Junio C Hamano
2015-05-12 21:14         ` [PATCH 1/3] config.txt: Clarify allowTipSHA1InWant with camelCase Fredrik Medley
2015-05-12 21:14           ` [PATCH 2/3] upload-pack: Prepare to extend allow-tip-sha1-in-want Fredrik Medley
2015-05-12 21:37             ` Eric Sunshine
2015-05-12 21:39             ` Junio C Hamano [this message]
2015-05-19 20:19               ` Fredrik Medley
2015-05-12 21:14           ` [PATCH 3/3] upload-pack: Optionally allow fetching reachable sha1 Fredrik Medley
2015-05-12 22:01             ` Eric Sunshine
2015-05-19 20:44               ` [PATCH 1/3] config.txt: clarify allowTipSHA1InWant with camelCase Fredrik Medley
2015-05-19 20:44                 ` [PATCH 2/3] upload-pack: prepare to extend allow-tip-sha1-in-want Fredrik Medley
2015-05-19 22:00                   ` Junio C Hamano
2015-05-20 19:31                     ` Fredrik Medley
2015-05-19 20:44                 ` [PATCH 3/3] upload-pack: optionally allow fetching reachable sha1 Fredrik Medley
2015-05-19 22:06                   ` Junio C Hamano
2015-05-21 20:23                 ` [PATCH v5 1/3] config.txt: clarify allowTipSHA1InWant with camelCase Fredrik Medley
2015-05-21 20:23                   ` [PATCH v5 2/3] upload-pack: prepare to extend allow-tip-sha1-in-want Fredrik Medley
2015-05-21 22:07                     ` Junio C Hamano
2015-05-22 23:47                       ` Fredrik Medley
2015-05-23  0:53                         ` Junio C Hamano
2015-05-21 20:23                   ` [PATCH v5 3/3] upload-pack: optionally allow fetching reachable sha1 Fredrik Medley
2015-05-21 22:15                     ` Junio C Hamano
2015-05-22 23:55                       ` Fredrik Medley
2015-05-23  1:01                         ` Junio C Hamano
2015-05-12 21:24           ` [PATCH 1/3] config.txt: Clarify allowTipSHA1InWant with camelCase Eric Sunshine
2015-05-12 21:33             ` Junio C Hamano
2015-05-12 21:35           ` Junio C Hamano
2015-05-05 22:29   ` [PATCH v2] upload-pack: Optionally allow fetching reachable sha1 Eric Sunshine

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=xmqqmw19earu.fsf@gitster.dls.corp.google.com \
    --to=gitster@pobox.com \
    --cc=christian.halstrick@gmail.com \
    --cc=computerdruid@gmail.com \
    --cc=fredrik.medley@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=jrnieder@gmail.com \
    --cc=pclouds@gmail.com \
    --cc=peff@peff.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).