X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=peek-remote.c;h=ef3c76ce526f820d59e150ba08804caca71a4a11;hb=b6936205e73c058784288d21d1937e5bba26b91b;hp=a90cf2206925ff51b7e8c799b22c8e6cb09c7fc2;hpb=7fb23e6083dbefa8eb4c554d8b2cd5a6292b2df4;p=git.git diff --git a/peek-remote.c b/peek-remote.c index a90cf2206..ef3c76ce5 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"; +"git-peek-remote [--upload-pack=] [:]"; +static const char *uploadpack = "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) { @@ -28,6 +27,7 @@ int main(int argc, char **argv) int fd[2]; pid_t pid; int nongit = 0; + unsigned flags = 0; setup_git_directory_gently(&nongit); @@ -35,24 +35,41 @@ int main(int argc, char **argv) char *arg = argv[i]; if (*arg == '-') { - if (!strncmp("--exec=", arg, 7)) - exec = arg + 7; - else - usage(peek_remote_usage); - continue; + if (!strncmp("--upload-pack=", arg, 14)) { + uploadpack = arg + 14; + continue; + } + if (!strncmp("--exec=", arg, 7)) { + uploadpack = arg + 7; + 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); + pid = git_connect(fd, dest, uploadpack); 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; }