From: "Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
To: git@vger.kernel.org
Cc: "Eric Sunshine" <sunshine@sunshineco.com>,
"Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
Subject: [PATCH v2 10/25] upload-pack: move rev-list code out of check_non_tip()
Date: Thu, 4 Feb 2016 16:03:46 +0700 [thread overview]
Message-ID: <1454576641-29615-11-git-send-email-pclouds@gmail.com> (raw)
In-Reply-To: <1454576641-29615-1-git-send-email-pclouds@gmail.com>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
upload-pack.c | 44 +++++++++++++++++++++++++-------------------
1 file changed, 25 insertions(+), 19 deletions(-)
diff --git a/upload-pack.c b/upload-pack.c
index 9f14933..c8dafe8 100644
--- a/upload-pack.c
+++ b/upload-pack.c
@@ -451,7 +451,7 @@ static int is_our_ref(struct object *o)
return o->flags & ((allow_hidden_ref ? HIDDEN_REF : 0) | OUR_REF);
}
-static void check_non_tip(void)
+static int check_unreachable(struct object_array *src)
{
static const char *argv[] = {
"rev-list", "--stdin", NULL,
@@ -461,14 +461,6 @@ static void check_non_tip(void)
char namebuf[42]; /* ^ + SHA-1 + LF */
int i;
- /*
- * In the normal in-process case without
- * uploadpack.allowReachableSHA1InWant,
- * non-tip requests can never happen.
- */
- if (!stateless_rpc && !(allow_unadvertised_object_request & ALLOW_REACHABLE_SHA1))
- goto error;
-
cmd.argv = argv;
cmd.git_cmd = 1;
cmd.no_stderr = 1;
@@ -476,7 +468,7 @@ static void check_non_tip(void)
cmd.out = -1;
if (start_command(&cmd))
- goto error;
+ return 0;
/*
* If rev-list --stdin encounters an unknown commit, it
@@ -495,16 +487,16 @@ static void check_non_tip(void)
continue;
memcpy(namebuf + 1, oid_to_hex(&o->oid), GIT_SHA1_HEXSZ);
if (write_in_full(cmd.in, namebuf, 42) < 0)
- goto error;
+ return 0;
}
namebuf[40] = '\n';
- for (i = 0; i < want_obj.nr; i++) {
- o = want_obj.objects[i].item;
+ for (i = 0; i < src->nr; i++) {
+ o = src->objects[i].item;
if (is_our_ref(o))
continue;
memcpy(namebuf, oid_to_hex(&o->oid), GIT_SHA1_HEXSZ);
if (write_in_full(cmd.in, namebuf, 41) < 0)
- goto error;
+ return 0;
}
close(cmd.in);
@@ -516,7 +508,7 @@ static void check_non_tip(void)
*/
i = read_in_full(cmd.out, namebuf, 1);
if (i)
- goto error;
+ return 0;
close(cmd.out);
/*
@@ -525,15 +517,29 @@ static void check_non_tip(void)
* even when it showed no commit.
*/
if (finish_command(&cmd))
- goto error;
+ return 0;
/* All the non-tip ones are ancestors of what we advertised */
- return;
+ return 1;
+}
+
+static void check_non_tip(void)
+{
+ int i;
+
+ /*
+ * In the normal in-process case without
+ * uploadpack.allowReachableSHA1InWant,
+ * non-tip requests can never happen.
+ */
+ if (!stateless_rpc && !(allow_unadvertised_object_request & ALLOW_REACHABLE_SHA1))
+ ; /* error */
+ else if (check_unreachable(&want_obj))
+ return;
-error:
/* Pick one of them (we know there at least is one) */
for (i = 0; i < want_obj.nr; i++) {
- o = want_obj.objects[i].item;
+ struct object *o = want_obj.objects[i].item;
if (!is_our_ref(o))
die("git upload-pack: not our ref %s",
oid_to_hex(&o->oid));
--
2.7.0.377.g4cd97dd
next prev parent reply other threads:[~2016-02-04 9:05 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-04 9:03 [PATCH v2 00/25] More flexibility in making shallow clones Nguyễn Thái Ngọc Duy
2016-02-04 9:03 ` [PATCH v2 01/25] remote-curl.c: convert fetch_git() to use argv_array Nguyễn Thái Ngọc Duy
2016-02-04 22:59 ` Junio C Hamano
2016-02-04 9:03 ` [PATCH v2 02/25] transport-helper.c: refactor set_helper_option() Nguyễn Thái Ngọc Duy
2016-02-04 23:18 ` Junio C Hamano
2016-02-04 9:03 ` [PATCH v2 03/25] transport-helper.c: do not send null option to remote helper Nguyễn Thái Ngọc Duy
2016-02-04 23:22 ` Junio C Hamano
2016-02-06 9:38 ` Duy Nguyen
2016-02-08 20:53 ` Junio C Hamano
2016-02-04 9:03 ` [PATCH v2 04/25] upload-pack: move shallow deepen code out of receive_needs() Nguyễn Thái Ngọc Duy
2016-02-04 23:30 ` Junio C Hamano
2016-02-04 9:03 ` [PATCH v2 05/25] upload-pack: move "shallow" sending code out of deepen() Nguyễn Thái Ngọc Duy
2016-02-04 9:03 ` [PATCH v2 06/25] upload-pack: remove unused variable "backup" Nguyễn Thái Ngọc Duy
2016-02-04 23:32 ` Junio C Hamano
2016-02-04 9:03 ` [PATCH v2 07/25] upload-pack: move "unshallow" sending code out of deepen() Nguyễn Thái Ngọc Duy
2016-02-04 23:39 ` Junio C Hamano
2016-02-04 9:03 ` [PATCH v2 08/25] upload-pack: use skip_prefix() instead of starts_with() when possible Nguyễn Thái Ngọc Duy
2016-02-04 23:42 ` Junio C Hamano
2016-02-04 9:03 ` [PATCH v2 09/25] upload-pack: tighten number parsing at "deepen" lines Nguyễn Thái Ngọc Duy
2016-02-04 23:48 ` Junio C Hamano
2016-02-15 3:07 ` Duy Nguyen
2016-02-04 9:03 ` Nguyễn Thái Ngọc Duy [this message]
2016-02-04 9:03 ` [PATCH v2 11/25] fetch-pack: use skip_prefix() instead of starts_with() when possible Nguyễn Thái Ngọc Duy
2016-02-04 23:56 ` Junio C Hamano
2016-02-04 9:03 ` [PATCH v2 12/25] fetch-pack: use a common function for verbose printing Nguyễn Thái Ngọc Duy
2016-02-05 0:02 ` Junio C Hamano
2016-02-05 4:03 ` Eric Sunshine
2016-02-04 9:03 ` [PATCH v2 13/25] fetch-pack: use a separate flag for fetch in deepening mode Nguyễn Thái Ngọc Duy
2016-02-05 0:03 ` Junio C Hamano
2016-02-05 4:13 ` Eric Sunshine
2016-02-04 9:03 ` [PATCH v2 14/25] shallow.c: implement a generic shallow boundary finder based on rev-list Nguyễn Thái Ngọc Duy
2016-02-08 21:09 ` Junio C Hamano
2016-02-15 8:00 ` Duy Nguyen
2016-02-19 9:30 ` Duy Nguyen
2016-02-04 9:03 ` [PATCH v2 15/25] upload-pack: add deepen-since to cut shallow repos based on time Nguyễn Thái Ngọc Duy
2016-02-08 21:14 ` Junio C Hamano
2016-02-04 9:03 ` [PATCH v2 16/25] fetch: define shallow boundary with --shallow-since Nguyễn Thái Ngọc Duy
2016-02-04 9:03 ` [PATCH v2 17/25] clone: define shallow clone boundary based on time " Nguyễn Thái Ngọc Duy
2016-02-08 21:20 ` Junio C Hamano
2016-02-04 9:03 ` [PATCH v2 18/25] t5500, t5539: tests for shallow depth since a specific date Nguyễn Thái Ngọc Duy
2016-02-08 21:24 ` Junio C Hamano
2016-02-15 7:17 ` Duy Nguyen
2016-02-04 9:03 ` [PATCH v2 19/25] refs: add expand_ref() Nguyễn Thái Ngọc Duy
2016-02-08 21:27 ` Junio C Hamano
2016-02-04 9:03 ` [PATCH v2 20/25] upload-pack: support define shallow boundary by excluding revisions Nguyễn Thái Ngọc Duy
2016-02-05 5:03 ` Eric Sunshine
2016-02-08 21:34 ` Junio C Hamano
2016-02-05 5:05 ` Eric Sunshine
2016-02-15 3:31 ` Duy Nguyen
2016-02-04 9:03 ` [PATCH v2 21/25] fetch: define shallow boundary with --shallow-exclude Nguyễn Thái Ngọc Duy
2016-02-05 5:26 ` Eric Sunshine
2016-02-15 3:53 ` Duy Nguyen
2016-02-15 5:52 ` Eric Sunshine
2016-02-15 5:56 ` Eric Sunshine
2016-02-15 8:15 ` Duy Nguyen
2016-02-19 1:35 ` Eric Sunshine
2016-02-04 9:03 ` [PATCH v2 22/25] clone: define shallow clone " Nguyễn Thái Ngọc Duy
2016-02-04 9:03 ` [PATCH v2 23/25] t5500, t5539: tests for shallow depth excluding a ref Nguyễn Thái Ngọc Duy
2016-02-04 9:04 ` [PATCH v2 24/25] upload-pack: make check_reachable_object() return unreachable list if asked Nguyễn Thái Ngọc Duy
2016-02-05 5:41 ` Eric Sunshine
2016-02-04 9:04 ` [PATCH v2 25/25] fetch, upload-pack: --deepen=N extends shallow boundary by N commits Nguyễn Thái Ngọc Duy
2016-02-08 21:45 ` [PATCH v2 00/25] More flexibility in making shallow clones Junio C Hamano
2016-02-12 0:24 ` Duy Nguyen
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=1454576641-29615-11-git-send-email-pclouds@gmail.com \
--to=pclouds@gmail.com \
--cc=git@vger.kernel.org \
--cc=sunshine@sunshineco.com \
/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.