peek-remote.con commit git-daemon: timeout, eliminate double DWIM (b7080d8)
   1#include "cache.h"
   2#include "refs.h"
   3#include "pkt-line.h"
   4#include <sys/wait.h>
   5
   6static const char peek_remote_usage[] =
   7"git-peek-remote [--exec=upload-pack] [host:]directory";
   8static const char *exec = "git-upload-pack";
   9
  10static int peek_remote(int fd[2])
  11{
  12        struct ref *ref;
  13
  14        get_remote_heads(fd[0], &ref, 0, NULL, 0);
  15        packet_flush(fd[1]);
  16
  17        while (ref) {
  18                printf("%s      %s\n", sha1_to_hex(ref->old_sha1), ref->name);
  19                ref = ref->next;
  20        }
  21        return 0;
  22}
  23
  24int main(int argc, char **argv)
  25{
  26        int i, ret;
  27        char *dest = NULL;
  28        int fd[2];
  29        pid_t pid;
  30
  31        for (i = 1; i < argc; i++) {
  32                char *arg = argv[i];
  33
  34                if (*arg == '-') {
  35                        if (!strncmp("--exec=", arg, 7))
  36                                exec = arg + 7;
  37                        else
  38                                usage(peek_remote_usage);
  39                        continue;
  40                }
  41                dest = arg;
  42                break;
  43        }
  44        if (!dest || i != argc - 1)
  45                usage(peek_remote_usage);
  46
  47        pid = git_connect(fd, dest, exec);
  48        if (pid < 0)
  49                return 1;
  50        ret = peek_remote(fd);
  51        close(fd[0]);
  52        close(fd[1]);
  53        finish_connect(pid);
  54        return ret;
  55}