#include "pkt-line.h"
#include <sys/wait.h>
-static const char clone_pack_usage[] = "git-clone-pack [host:]directory [heads]*";
+static int quiet;
+static const char clone_pack_usage[] = "git-clone-pack [-q] [--exec=<git-upload-pack>] [<host>:]<directory> [<heads>]*";
static const char *exec = "git-upload-pack";
struct ref {
char name[0];
};
-struct ref *get_remote_refs(int fd, int nr_match, char **match)
+static struct ref *get_remote_refs(int fd, int nr_match, char **match)
{
struct ref *ref_list = NULL, **next_ref = &ref_list;
if (line[len-1] == '\n')
line[--len] = 0;
if (len < 42 || get_sha1_hex(line, sha1))
- die("git-fetch-pack: protocol error - expected ref descriptor, got '%s¤'", line);
+ die("git-clone-pack: protocol error - expected ref descriptor, got '%s'", line);
refname = line+41;
len = len-40;
if (nr_match && !path_match(refname, nr_match, match))
if (pid < 0)
die("git-clone-pack: unable to fork off git-unpack-objects");
if (!pid) {
- close(fd[1]);
dup2(fd[0], 0);
close(fd[0]);
- execlp("git-unpack-objects", "git-unpack-objects", NULL);
+ close(fd[1]);
+ execlp("git-unpack-objects", "git-unpack-objects",
+ quiet ? "-q" : NULL, NULL);
die("git-unpack-objects exec failed");
}
close(fd[0]);
char *arg = argv[i];
if (*arg == '-') {
- /* Arguments go here */
+ if (!strcmp("-q", arg)) {
+ quiet = 1;
+ continue;
+ }
+ if (!strncmp("--exec=", arg, 7)) {
+ exec = arg + 7;
+ continue;
+ }
usage(clone_pack_usage);
}
dest = arg;