X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=peek-remote.c;h=ceb787170e17df130e26658e5a189bb63684ab3e;hb=f1eccbab638df66a7d8ec881f6f695514b26f44f;hp=4b1d0d5ba8ebb61c50a8766c73c6ba19e6efdef9;hpb=80bd6f3064a6009cd18a4dab9ce6d29681cec4af;p=git.git diff --git a/peek-remote.c b/peek-remote.c index 4b1d0d5ba..ceb787170 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); + get_remote_heads(fd[0], &ref, 0, NULL, flags); packet_flush(fd[1]); while (ref) { @@ -27,29 +26,50 @@ 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)) - exec = arg + 7; - else - usage(peek_remote_usage); - continue; + if (!prefixcmp(arg, "--upload-pack=")) { + uploadpack = arg + 14; + continue; + } + if (!prefixcmp(arg, "--exec=")) { + 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, 0); 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; }