Merge branch 'et/spell-poll-infinite-with-minus-one-only' into maint
authorJunio C Hamano <gitster@pobox.com>
Fri, 19 Sep 2014 21:05:13 +0000 (14:05 -0700)
committerJunio C Hamano <gitster@pobox.com>
Fri, 19 Sep 2014 21:05:13 +0000 (14:05 -0700)
* et/spell-poll-infinite-with-minus-one-only:
upload-pack: keep poll(2)'s timeout to -1

1  2 
upload-pack.c
diff --combined upload-pack.c
index 01de944a0a23f752364de51d7f5a5be6480575e8,12c6b4d1a0807fc8829e3a13b2b2b5dce59498a6..433211a238cfee261e6e1f9e73d14df9178f004a
@@@ -17,7 -17,7 +17,7 @@@
  
  static const char upload_pack_usage[] = "git upload-pack [--strict] [--timeout=<n>] <dir>";
  
 -/* 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,14 -70,6 +70,14 @@@ 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;
        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";
  
        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));
                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",
@@@ -800,7 -793,7 +802,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];