#include "pkt-line.h"
#include <sys/wait.h>
+static int quiet;
static const char clone_pack_usage[] = "git-clone-pack [host:]directory [heads]*";
static const char *exec = "git-upload-pack";
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;
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);
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]);
char *arg = argv[i];
if (*arg == '-') {
- /* Arguments go here */
+ if (!strcmp("-q", arg)) {
+ quiet = 1;
+ continue;
+ }
usage(clone_pack_usage);
}
dest = arg;