From: Junio C Hamano Date: Thu, 11 Sep 2014 17:33:28 +0000 (-0700) Subject: Merge branch 'et/spell-poll-infinite-with-minus-one-only' X-Git-Tag: v2.2.0-rc0~143 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/9ddd68973a946213a4607d6610e8a2b7ef5b19c0?ds=inline;hp=-c Merge branch 'et/spell-poll-infinite-with-minus-one-only' We used to pass -1000 to poll(2), expecting it to also mean "no timeout", which should be spelled as -1. * et/spell-poll-infinite-with-minus-one-only: upload-pack: keep poll(2)'s timeout to -1 --- 9ddd68973a946213a4607d6610e8a2b7ef5b19c0 diff --combined upload-pack.c index c9ea1d3be6,12c6b4d1a0..c789ec0050 --- a/upload-pack.c +++ b/upload-pack.c @@@ -17,7 -17,7 +17,7 @@@ static const char upload_pack_usage[] = "git upload-pack [--strict] [--timeout=] "; -/* bits #0..7 in revision.h, #8..10 in commit.c */ +/* Remember to update object flag allocation in object.h */ #define THEY_HAVE (1u << 11) #define OUR_REF (1u << 12) #define WANTED (1u << 13) @@@ -70,17 -70,9 +70,17 @@@ static ssize_t send_client_data(int fd return sz; } +static int write_one_shallow(const struct commit_graft *graft, void *cb_data) +{ + FILE *fp = cb_data; + if (graft->nr_parent == -1) + fprintf(fp, "--shallow %s\n", sha1_to_hex(graft->sha1)); + return 0; +} + static void create_pack_file(void) { - struct child_process pack_objects; + struct child_process pack_objects = CHILD_PROCESS_INIT; char data[8193], progress[128]; char abort_msg[] = "aborting due to possible repository " "corruption on the remote side."; @@@ -89,10 -81,12 +89,10 @@@ const char *argv[12]; int i, arg = 0; FILE *pipe_fd; - const char *shallow_file = NULL; if (shallow_nr) { - shallow_file = setup_temporary_shallow(NULL); argv[arg++] = "--shallow-file"; - argv[arg++] = shallow_file; + argv[arg++] = ""; } argv[arg++] = "pack-objects"; argv[arg++] = "--revs"; @@@ -108,6 -102,7 +108,6 @@@ argv[arg++] = "--include-tag"; argv[arg++] = NULL; - memset(&pack_objects, 0, sizeof(pack_objects)); pack_objects.in = -1; pack_objects.out = -1; pack_objects.err = -1; @@@ -119,9 -114,6 +119,9 @@@ pipe_fd = xfdopen(pack_objects.in, "w"); + if (shallow_nr) + for_each_commit_graft(write_one_shallow, pipe_fd); + for (i = 0; i < want_obj.nr; i++) fprintf(pipe_fd, "%s\n", sha1_to_hex(want_obj.objects[i].item->sha1)); @@@ -166,7 -158,9 +166,9 @@@ if (!pollsize) break; - ret = poll(pfd, pollsize, 1000 * keepalive); + ret = poll(pfd, pollsize, + keepalive < 0 ? -1 : 1000 * keepalive); + if (ret < 0) { if (errno != EINTR) { error("poll failed, resuming: %s", @@@ -447,7 -441,7 +449,7 @@@ static void check_non_tip(void static const char *argv[] = { "rev-list", "--stdin", NULL, }; - static struct child_process cmd; + static struct child_process cmd = CHILD_PROCESS_INIT; struct object *o; char namebuf[42]; /* ^ + SHA-1 + LF */ int i; @@@ -799,7 -793,7 +801,7 @@@ int main(int argc, char **argv packet_trace_identity("upload-pack"); git_extract_argv0_path(argv[0]); - read_replace_refs = 0; + check_replace_refs = 0; for (i = 1; i < argc; i++) { char *arg = argv[i];