All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christian Couder <christian.couder@gmail.com>
To: git@vger.kernel.org
Cc: Junio C Hamano <gitster@pobox.com>,
	Derrick Stolee <dstolee@microsoft.com>, Jeff King <peff@peff.net>,
	Taylor Blau <me@ttaylorr.com>,
	Jonathan Tan <jonathantanmy@google.com>,
	Jonathan Nieder <jrnieder@gmail.com>,
	Christian Couder <chriscool@tuxfamily.org>
Subject: [PATCH 08/14] upload-pack: change allow_unadvertised_object_request to an enum
Date: Thu, 11 Jun 2020 14:05:12 +0200	[thread overview]
Message-ID: <20200611120518.10771-9-chriscool@tuxfamily.org> (raw)
In-Reply-To: <20200611120518.10771-1-chriscool@tuxfamily.org>

As we cleanup 'upload-pack.c' by using 'struct upload_pack_data'
more thoroughly, let's change allow_unadvertised_object_request,
which is now part of 'upload_pack_data', from an 'unsigned int'
to an enum.

This will make it clear which values this variable can take.

While at it let's change this variable name to 'allow_uor' to
make it shorter.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
---
 upload-pack.c | 68 ++++++++++++++++++++++++---------------------------
 1 file changed, 32 insertions(+), 36 deletions(-)

diff --git a/upload-pack.c b/upload-pack.c
index 5cd1342f62..0b30794d91 100644
--- a/upload-pack.c
+++ b/upload-pack.c
@@ -44,13 +44,15 @@
 
 static timestamp_t oldest_have;
 
-/* Values for allow_unadvertised_object_request flags */
-/* Allow specifying sha1 if it is a ref tip. */
-#define ALLOW_TIP_SHA1	01
-/* Allow request of a sha1 if it is reachable from a ref (possibly hidden ref). */
-#define ALLOW_REACHABLE_SHA1	02
-/* Allow request of any sha1. Implies ALLOW_TIP_SHA1 and ALLOW_REACHABLE_SHA1. */
-#define ALLOW_ANY_SHA1	07
+/* Enum for allowed unadvertised object request (UOR) */
+enum allow_uor {
+	/* Allow specifying sha1 if it is a ref tip. */
+	ALLOW_TIP_SHA1 = 0x01,
+	/* Allow request of a sha1 if it is reachable from a ref (possibly hidden ref). */
+	ALLOW_REACHABLE_SHA1 = 0x02,
+	/* Allow request of any sha1. Implies ALLOW_TIP_SHA1 and ALLOW_REACHABLE_SHA1. */
+	ALLOW_ANY_SHA1 = 0x07
+};
 
 /*
  * Please annotate, and if possible group together, fields used only
@@ -83,8 +85,7 @@ struct upload_pack_data {
 	/* 0 for no sideband, otherwise DEFAULT_PACKET_MAX or LARGE_PACKET_MAX */
 	int use_sideband;
 
-	/* See ALLOW_* values defined above */
-	unsigned int allow_unadvertised_object_request;
+	enum allow_uor allow_uor;
 
 	struct list_objects_filter_options filter_options;
 
@@ -517,11 +518,10 @@ static int get_common_commits(struct upload_pack_data *data,
 	}
 }
 
-static int is_our_ref(struct object *o,
-		      unsigned int allow_unadvertised_object_request)
+static int is_our_ref(struct object *o, enum allow_uor allow_uor)
 {
-	int allow_hidden_ref = (allow_unadvertised_object_request &
-			(ALLOW_TIP_SHA1 | ALLOW_REACHABLE_SHA1));
+	int allow_hidden_ref = (allow_uor &
+				(ALLOW_TIP_SHA1 | ALLOW_REACHABLE_SHA1));
 	return o->flags & ((allow_hidden_ref ? HIDDEN_REF : 0) | OUR_REF);
 }
 
@@ -531,7 +531,7 @@ static int is_our_ref(struct object *o,
 static int do_reachable_revlist(struct child_process *cmd,
 				struct object_array *src,
 				struct object_array *reachable,
-				unsigned int allow_unadvertised_object_request)
+				enum allow_uor allow_uor)
 {
 	static const char *argv[] = {
 		"rev-list", "--stdin", NULL,
@@ -565,7 +565,7 @@ static int do_reachable_revlist(struct child_process *cmd,
 			continue;
 		if (reachable && o->type == OBJ_COMMIT)
 			o->flags &= ~TMP_MARK;
-		if (!is_our_ref(o, allow_unadvertised_object_request))
+		if (!is_our_ref(o, allow_uor))
 			continue;
 		memcpy(namebuf + 1, oid_to_hex(&o->oid), hexsz);
 		if (write_in_full(cmd->in, namebuf, hexsz + 2) < 0)
@@ -574,7 +574,7 @@ static int do_reachable_revlist(struct child_process *cmd,
 	namebuf[hexsz] = '\n';
 	for (i = 0; i < src->nr; i++) {
 		o = src->objects[i].item;
-		if (is_our_ref(o, allow_unadvertised_object_request)) {
+		if (is_our_ref(o, allow_uor)) {
 			if (reachable)
 				add_object_array(o, NULL, reachable);
 			continue;
@@ -611,7 +611,7 @@ static int get_reachable_list(struct upload_pack_data *data,
 	const unsigned hexsz = the_hash_algo->hexsz;
 
 	if (do_reachable_revlist(&cmd, &data->shallows, reachable,
-				 data->allow_unadvertised_object_request) < 0)
+				 data->allow_uor) < 0)
 		return -1;
 
 	while ((i = read_in_full(cmd.out, namebuf, hexsz + 1)) == hexsz + 1) {
@@ -642,15 +642,13 @@ static int get_reachable_list(struct upload_pack_data *data,
 	return 0;
 }
 
-static int has_unreachable(struct object_array *src,
-			   unsigned int allow_unadvertised_object_request)
+static int has_unreachable(struct object_array *src, enum allow_uor allow_uor)
 {
 	struct child_process cmd = CHILD_PROCESS_INIT;
 	char buf[1];
 	int i;
 
-	if (do_reachable_revlist(&cmd, src, NULL,
-				 allow_unadvertised_object_request) < 0)
+	if (do_reachable_revlist(&cmd, src, NULL, allow_uor) < 0)
 		return 1;
 
 	/*
@@ -690,11 +688,9 @@ static void check_non_tip(struct upload_pack_data *data)
 	 * uploadpack.allowReachableSHA1InWant,
 	 * non-tip requests can never happen.
 	 */
-	if (!data->stateless_rpc
-	    && !(data->allow_unadvertised_object_request & ALLOW_REACHABLE_SHA1))
+	if (!data->stateless_rpc && !(data->allow_uor & ALLOW_REACHABLE_SHA1))
 		goto error;
-	if (!has_unreachable(&data->want_obj,
-			     data->allow_unadvertised_object_request))
+	if (!has_unreachable(&data->want_obj, data->allow_uor))
 		/* All the non-tip ones are ancestors of what we advertised */
 		return;
 
@@ -702,7 +698,7 @@ static void check_non_tip(struct upload_pack_data *data)
 	/* Pick one of them (we know there at least is one) */
 	for (i = 0; i < data->want_obj.nr; i++) {
 		struct object *o = data->want_obj.objects[i].item;
-		if (!is_our_ref(o, data->allow_unadvertised_object_request)) {
+		if (!is_our_ref(o, data->allow_uor)) {
 			packet_writer_error(&data->writer,
 					    "upload-pack: not our ref %s",
 					    oid_to_hex(&o->oid));
@@ -1001,8 +997,8 @@ static void receive_needs(struct upload_pack_data *data,
 		}
 		if (!(o->flags & WANTED)) {
 			o->flags |= WANTED;
-			if (!((data->allow_unadvertised_object_request & ALLOW_ANY_SHA1) == ALLOW_ANY_SHA1
-			      || is_our_ref(o, data->allow_unadvertised_object_request)))
+			if (!((data->allow_uor & ALLOW_ANY_SHA1) == ALLOW_ANY_SHA1
+			      || is_our_ref(o, data->allow_uor)))
 				has_non_tip = 1;
 			add_object_array(o, NULL, &data->want_obj);
 		}
@@ -1081,9 +1077,9 @@ static int send_ref(const char *refname, const struct object_id *oid,
 		packet_write_fmt(1, "%s %s%c%s%s%s%s%s%s agent=%s\n",
 			     oid_to_hex(oid), refname_nons,
 			     0, capabilities,
-			     (data->allow_unadvertised_object_request & ALLOW_TIP_SHA1) ?
+			     (data->allow_uor & ALLOW_TIP_SHA1) ?
 				     " allow-tip-sha1-in-want" : "",
-			     (data->allow_unadvertised_object_request & ALLOW_REACHABLE_SHA1) ?
+			     (data->allow_uor & ALLOW_REACHABLE_SHA1) ?
 				     " allow-reachable-sha1-in-want" : "",
 			     data->stateless_rpc ? " no-done" : "",
 			     symref_info.buf,
@@ -1121,19 +1117,19 @@ static int upload_pack_config(const char *var, const char *value, void *cb_data)
 
 	if (!strcmp("uploadpack.allowtipsha1inwant", var)) {
 		if (git_config_bool(var, value))
-			data->allow_unadvertised_object_request |= ALLOW_TIP_SHA1;
+			data->allow_uor |= ALLOW_TIP_SHA1;
 		else
-			data->allow_unadvertised_object_request &= ~ALLOW_TIP_SHA1;
+			data->allow_uor &= ~ALLOW_TIP_SHA1;
 	} else if (!strcmp("uploadpack.allowreachablesha1inwant", var)) {
 		if (git_config_bool(var, value))
-			data->allow_unadvertised_object_request |= ALLOW_REACHABLE_SHA1;
+			data->allow_uor |= ALLOW_REACHABLE_SHA1;
 		else
-			data->allow_unadvertised_object_request &= ~ALLOW_REACHABLE_SHA1;
+			data->allow_uor &= ~ALLOW_REACHABLE_SHA1;
 	} else if (!strcmp("uploadpack.allowanysha1inwant", var)) {
 		if (git_config_bool(var, value))
-			data->allow_unadvertised_object_request |= ALLOW_ANY_SHA1;
+			data->allow_uor |= ALLOW_ANY_SHA1;
 		else
-			data->allow_unadvertised_object_request &= ~ALLOW_ANY_SHA1;
+			data->allow_uor &= ~ALLOW_ANY_SHA1;
 	} else if (!strcmp("uploadpack.keepalive", var)) {
 		data->keepalive = git_config_int(var, value);
 		if (!data->keepalive)
-- 
2.27.0.90.gabb59f83a2


  parent reply	other threads:[~2020-06-11 12:05 UTC|newest]

Thread overview: 108+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-15 10:04 [PATCH 00/13] upload-pack: use 'struct upload_pack_data' thoroughly, part 1 Christian Couder
2020-05-15 10:04 ` [PATCH 01/13] upload-pack: remove unused 'wants' from upload_pack_data Christian Couder
2020-05-15 18:03   ` Jeff King
2020-05-15 10:04 ` [PATCH 02/13] upload-pack: move {want,have}_obj to upload_pack_data Christian Couder
2020-05-15 18:05   ` Jeff King
2020-05-15 10:04 ` [PATCH 03/13] upload-pack: move 'struct upload_pack_data' around Christian Couder
2020-05-15 18:05   ` Jeff King
2020-05-15 10:04 ` [PATCH 04/13] upload-pack: use 'struct upload_pack_data' in upload_pack() Christian Couder
2020-05-15 10:30   ` Derrick Stolee
2020-05-15 18:13     ` Jeff King
2020-05-15 10:04 ` [PATCH 05/13] upload-pack: pass upload_pack_data to get_common_commits() Christian Couder
2020-05-15 18:17   ` Jeff King
2020-05-15 18:36     ` Jeff King
2020-05-15 10:04 ` [PATCH 06/13] upload-pack: pass upload_pack_data to receive_needs() Christian Couder
2020-05-15 18:20   ` Jeff King
2020-05-15 10:04 ` [PATCH 07/13] upload-pack: use upload_pack_data writer in receive_needs() Christian Couder
2020-05-15 18:23   ` Jeff King
2020-05-15 10:04 ` [PATCH 08/13] upload-pack: move symref to upload_pack_data Christian Couder
2020-05-15 18:28   ` Jeff King
2020-05-15 10:04 ` [PATCH 09/13] upload-pack: pass upload_pack_data to send_ref() Christian Couder
2020-05-15 18:33   ` Jeff King
2020-05-15 10:04 ` [PATCH 10/13] upload-pack: pass upload_pack_data to check_non_tip() Christian Couder
2020-05-15 10:04 ` [PATCH 11/13] upload-pack: remove static variable 'stateless_rpc' Christian Couder
2020-05-15 18:38   ` Jeff King
2020-05-15 10:04 ` [PATCH 12/13] upload-pack: pass upload_pack_data to create_pack_file() Christian Couder
2020-05-15 10:04 ` [PATCH 13/13] upload-pack: use upload_pack_data fields in receive_needs() Christian Couder
2020-05-15 18:42   ` Jeff King
2020-05-15 10:43 ` [PATCH 00/13] upload-pack: use 'struct upload_pack_data' thoroughly, part 1 Derrick Stolee
2020-05-19  9:49   ` Christian Couder
2020-05-15 18:47 ` Jeff King
2020-05-15 18:55   ` Jeff King
2020-05-19  9:44     ` Christian Couder
2020-05-27 16:47 ` [PATCH 00/12] upload-pack: use 'struct upload_pack_data' thoroughly, part 2 Christian Couder
2020-05-27 16:47   ` [PATCH 01/12] upload-pack: actually use some upload_pack_data bitfields Christian Couder
2020-05-27 16:47   ` [PATCH 02/12] upload-pack: move static vars to upload_pack_data Christian Couder
2020-05-27 18:06     ` Jeff King
2020-06-02  4:19       ` Christian Couder
2020-05-27 16:47   ` [PATCH 03/12] upload-pack: move use_sideband " Christian Couder
2020-05-27 18:07     ` Jeff King
2020-05-27 16:47   ` [PATCH 04/12] upload-pack: move filter_capability_requested " Christian Couder
2020-05-27 18:08     ` Jeff King
2020-05-27 16:47   ` [PATCH 05/12] upload-pack: move multi_ack " Christian Couder
2020-05-27 16:47   ` [PATCH 06/12] upload-pack: change multi_ack to an enum Christian Couder
2020-05-27 18:10     ` Jeff King
2020-05-27 16:47   ` [PATCH 07/12] upload-pack: pass upload_pack_data to upload_pack_config() Christian Couder
2020-05-27 18:36     ` Jeff King
2020-05-27 16:47   ` [PATCH 08/12] upload-pack: move keepalive to upload_pack_data Christian Couder
2020-05-27 18:38     ` Jeff King
2020-05-27 16:47   ` [PATCH 09/12] upload-pack: move allow_filter " Christian Couder
2020-05-27 18:39     ` Jeff King
2020-05-27 16:47   ` [PATCH 10/12] upload-pack: move allow_ref_in_want " Christian Couder
2020-05-27 18:41     ` Jeff King
2020-05-27 16:47   ` [PATCH 11/12] upload-pack: move allow_sideband_all " Christian Couder
2020-05-27 16:47   ` [PATCH 12/12] upload-pack: move pack_objects_hook " Christian Couder
2020-05-27 18:55     ` Jeff King
2020-05-27 18:57   ` [PATCH 00/12] upload-pack: use 'struct upload_pack_data' thoroughly, part 2 Jeff King
2020-05-27 20:41     ` Junio C Hamano
2020-06-02  4:16   ` [PATCH v2 00/13] " Christian Couder
2020-06-02  4:16     ` [PATCH v2 01/13] upload-pack: actually use some upload_pack_data bitfields Christian Couder
2020-06-02  4:16     ` [PATCH v2 02/13] upload-pack: annotate upload_pack_data fields Christian Couder
2020-06-02  4:16     ` [PATCH v2 03/13] upload-pack: move static vars to upload_pack_data Christian Couder
2020-06-02  6:59       ` Jeff King
2020-06-02  4:16     ` [PATCH v2 04/13] upload-pack: move use_sideband " Christian Couder
2020-06-02  4:16     ` [PATCH v2 05/13] upload-pack: move filter_capability_requested " Christian Couder
2020-06-02  4:16     ` [PATCH v2 06/13] upload-pack: move multi_ack " Christian Couder
2020-06-02  4:16     ` [PATCH v2 07/13] upload-pack: change multi_ack to an enum Christian Couder
2020-06-02  4:16     ` [PATCH v2 08/13] upload-pack: pass upload_pack_data to upload_pack_config() Christian Couder
2020-06-02  4:16     ` [PATCH v2 09/13] upload-pack: move keepalive to upload_pack_data Christian Couder
2020-06-02  4:16     ` [PATCH v2 10/13] upload-pack: move allow_filter " Christian Couder
2020-06-02  4:16     ` [PATCH v2 11/13] upload-pack: move allow_ref_in_want " Christian Couder
2020-06-02  4:16     ` [PATCH v2 12/13] upload-pack: move allow_sideband_all " Christian Couder
2020-06-02  4:16     ` [PATCH v2 13/13] upload-pack: move pack_objects_hook " Christian Couder
2020-06-02  7:08     ` [PATCH v2 00/13] upload-pack: use 'struct upload_pack_data' thoroughly, part 2 Jeff King
2020-06-02 17:24       ` Junio C Hamano
2020-06-02 19:05     ` [PATCH] fixup! upload-pack: change multi_ack to an enum Jonathan Tan
2020-06-02 19:28       ` Christian Couder
2020-06-04 17:54     ` [PATCH v3 00/13] upload-pack: use 'struct upload_pack_data' thoroughly, part 2 Christian Couder
2020-06-04 17:54       ` [PATCH v3 01/13] upload-pack: actually use some upload_pack_data bitfields Christian Couder
2020-06-04 17:54       ` [PATCH v3 02/13] upload-pack: annotate upload_pack_data fields Christian Couder
2020-06-04 17:54       ` [PATCH v3 03/13] upload-pack: move static vars to upload_pack_data Christian Couder
2020-06-04 17:54       ` [PATCH v3 04/13] upload-pack: move use_sideband " Christian Couder
2020-06-04 17:54       ` [PATCH v3 05/13] upload-pack: move filter_capability_requested " Christian Couder
2020-06-04 17:54       ` [PATCH v3 06/13] upload-pack: move multi_ack " Christian Couder
2020-06-04 17:54       ` [PATCH v3 07/13] upload-pack: change multi_ack to an enum Christian Couder
2020-06-04 17:54       ` [PATCH v3 08/13] upload-pack: pass upload_pack_data to upload_pack_config() Christian Couder
2020-06-04 17:54       ` [PATCH v3 09/13] upload-pack: move keepalive to upload_pack_data Christian Couder
2020-06-04 17:54       ` [PATCH v3 10/13] upload-pack: move allow_filter " Christian Couder
2020-06-04 17:54       ` [PATCH v3 11/13] upload-pack: move allow_ref_in_want " Christian Couder
2020-06-04 17:54       ` [PATCH v3 12/13] upload-pack: move allow_sideband_all " Christian Couder
2020-06-04 17:54       ` [PATCH v3 13/13] upload-pack: move pack_objects_hook " Christian Couder
2020-06-04 18:07       ` [PATCH v3 00/13] upload-pack: use 'struct upload_pack_data' thoroughly, part 2 Junio C Hamano
2020-06-05 10:38         ` Christian Couder
2020-06-11 12:05 ` [PATCH 00/14] upload-pack: use 'struct upload_pack_data' thoroughly, part 3 Christian Couder
2020-06-11 12:05   ` [PATCH 01/14] upload-pack: pass upload_pack_data to send_shallow_list() Christian Couder
2020-06-11 12:05   ` [PATCH 02/14] upload-pack: pass upload_pack_data to deepen() Christian Couder
2020-06-11 12:05   ` [PATCH 03/14] upload-pack: pass upload_pack_data to deepen_by_rev_list() Christian Couder
2020-06-11 12:05   ` [PATCH 04/14] upload-pack: pass upload_pack_data to send_unshallow() Christian Couder
2020-06-11 12:05   ` [PATCH 05/14] upload-pack: move shallow_nr to upload_pack_data Christian Couder
2020-06-11 12:05   ` [PATCH 06/14] upload-pack: move extra_edge_obj " Christian Couder
2020-06-11 12:05   ` [PATCH 07/14] upload-pack: move allow_unadvertised_object_request " Christian Couder
2020-06-11 12:05   ` Christian Couder [this message]
2020-06-11 12:05   ` [PATCH 09/14] upload-pack: pass upload_pack_data to process_haves() Christian Couder
2020-06-11 12:05   ` [PATCH 10/14] upload-pack: pass upload_pack_data to send_acks() Christian Couder
2020-06-11 12:05   ` [PATCH 11/14] upload-pack: pass upload_pack_data to ok_to_give_up() Christian Couder
2020-06-11 12:05   ` [PATCH 12/14] upload-pack: pass upload_pack_data to got_oid() Christian Couder
2020-06-11 12:05   ` [PATCH 13/14] upload-pack: move oldest_have to upload_pack_data Christian Couder
2020-06-11 12:05   ` [PATCH 14/14] upload-pack: refactor common code into do_got_oid() Christian Couder
2020-06-11 20:04   ` [PATCH 00/14] upload-pack: use 'struct upload_pack_data' thoroughly, part 3 Jonathan Tan

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

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

  git send-email \
    --in-reply-to=20200611120518.10771-9-chriscool@tuxfamily.org \
    --to=christian.couder@gmail.com \
    --cc=chriscool@tuxfamily.org \
    --cc=dstolee@microsoft.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=jonathantanmy@google.com \
    --cc=jrnieder@gmail.com \
    --cc=me@ttaylorr.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.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.