X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=peek-remote.c;h=353da002b4c7632ed66c1b3ceacaa985ec137627;hb=61b41790c4d6abccf86c87f7ae312da8adbac3dd;hp=4b1d0d5ba8ebb61c50a8766c73c6ba19e6efdef9;hpb=c1067050ce58b5b39f528fe634732da858664603;p=git.git diff --git a/peek-remote.c b/peek-remote.c index 4b1d0d5ba..353da002b 100644 --- a/peek-remote.c +++ b/peek-remote.c @@ -1,17 +1,16 @@ #include "cache.h" #include "refs.h" #include "pkt-line.h" -#include 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); + get_remote_heads(fd[0], &ref, 0, NULL, flags); packet_flush(fd[1]); while (ref) { @@ -27,29 +26,46 @@ 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); - return ret; + ret |= finish_connect(pid); + return !!ret; }