X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=clone-pack.c;h=8f5209cfd5bfa5e2cc97333a33432b747f90d96d;hb=d6d8dac032e0e0c55b3edffbefd0abb00ca960fc;hp=0337ceccc4153b19dcffdee8c03c373b972fc6a8;hpb=1fcc8ea55d9a126156c037a8c80dc256ceec0855;p=git.git diff --git a/clone-pack.c b/clone-pack.c index 0337cecc..8f5209cf 100644 --- a/clone-pack.c +++ b/clone-pack.c @@ -3,6 +3,7 @@ #include "pkt-line.h" #include +static int quiet; static const char clone_pack_usage[] = "git-clone-pack [host:]directory [heads]*"; static const char *exec = "git-upload-pack"; @@ -12,7 +13,7 @@ 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; @@ -68,9 +69,12 @@ static int is_master(struct ref *ref) static void write_one_ref(struct ref *ref) { char *path = git_path(ref->name); - int fd = open(path, O_CREAT | O_EXCL | O_WRONLY, 0666); + int fd; char *hex; + if (safe_create_leading_directories(path)) + die("unable to create leading directory for %s", ref->name); + fd = open(path, O_CREAT | O_EXCL | O_WRONLY, 0666); if (fd < 0) die("unable to create ref %s", ref->name); hex = sha1_to_hex(ref->sha1); @@ -151,7 +155,8 @@ static int clone_pack(int fd[2], int nr_match, char **match) close(fd[1]); dup2(fd[0], 0); close(fd[0]); - execlp("git-unpack-objects", "git-unpack-objects", NULL); + execlp("git-unpack-objects", "git-unpack-objects", + quiet ? "-q" : NULL, NULL); die("git-unpack-objects exec failed"); } close(fd[0]); @@ -187,7 +192,10 @@ int main(int argc, char **argv) char *arg = argv[i]; if (*arg == '-') { - /* Arguments go here */ + if (!strcmp("-q", arg)) { + quiet = 1; + continue; + } usage(clone_pack_usage); } dest = arg;