Code

gitweb: fix commitdiff_plain for root commits
[git.git] / peek-remote.c
index ee49bf3b7b123359153a961c56f5aa3d58515864..2b30980b04e68a84bd300d647e80a34c7d3e621f 100644 (file)
@@ -7,11 +7,11 @@ static const char peek_remote_usage[] =
 "git-peek-remote [--exec=upload-pack] [host:]directory";
 static const char *exec = "git-upload-pack";
 
-static int peek_remote(int fd[2])
+static int peek_remote(int fd[2], unsigned flags)
 {
        struct ref *ref;
 
-       get_remote_heads(fd[0], &ref, 0, NULL, 0);
+       get_remote_heads(fd[0], &ref, 0, NULL, flags);
        packet_flush(fd[1]);
 
        while (ref) {
@@ -27,27 +27,44 @@ int main(int argc, char **argv)
        char *dest = NULL;
        int fd[2];
        pid_t pid;
+       int nongit = 0;
+       unsigned flags = 0;
+
+       setup_git_directory_gently(&nongit);
 
        for (i = 1; i < argc; i++) {
                char *arg = argv[i];
 
                if (*arg == '-') {
-                       if (!strncmp("--exec=", arg, 7))
+                       if (!strncmp("--exec=", arg, 7)) {
                                exec = arg + 7;
-                       else
-                               usage(peek_remote_usage);
-                       continue;
+                               continue;
+                       }
+                       if (!strcmp("--tags", arg)) {
+                               flags |= REF_TAGS;
+                               continue;
+                       }
+                       if (!strcmp("--heads", arg)) {
+                               flags |= REF_HEADS;
+                               continue;
+                       }
+                       if (!strcmp("--refs", arg)) {
+                               flags |= REF_NORMAL;
+                               continue;
+                       }
+                       usage(peek_remote_usage);
                }
                dest = arg;
                break;
        }
+
        if (!dest || i != argc - 1)
                usage(peek_remote_usage);
 
        pid = git_connect(fd, dest, exec);
        if (pid < 0)
                return 1;
-       ret = peek_remote(fd);
+       ret = peek_remote(fd, flags);
        close(fd[0]);
        close(fd[1]);
        finish_connect(pid);