From: Junio C Hamano Date: Thu, 8 Dec 2005 01:48:53 +0000 (-0800) Subject: refs.c: make sure leading directories exist before writing a ref. X-Git-Tag: v0.99.9m^2~43 X-Git-Url: https://git.verplant.org/?a=commitdiff_plain;h=64224caf888253601b7285ab242f4a12779894b9;p=git.git refs.c: make sure leading directories exist before writing a ref. Otherwise cloning a repository with hierarchical branch/tag over http would fail. Signed-off-by: Junio C Hamano --- diff --git a/refs.c b/refs.c index ac261985..d2aec73e 100644 --- a/refs.c +++ b/refs.c @@ -292,6 +292,8 @@ int write_ref_sha1(const char *ref, int fd, const unsigned char *sha1) return -1; filename = ref_file_name(ref); lock_filename = ref_lock_file_name(ref); + if (safe_create_leading_directories(filename)) + die("unable to create leading directory for %s", filename); retval = write_ref_file(filename, lock_filename, fd, sha1); free(filename); free(lock_filename); @@ -358,6 +360,8 @@ int write_ref_sha1_unlocked(const char *ref, const unsigned char *sha1) return -1; filename = ref_file_name(ref); lock_filename = ref_lock_file_name(ref); + if (safe_create_leading_directories(filename)) + die("unable to create leading directory for %s", filename); fd = open(lock_filename, O_WRONLY | O_CREAT | O_EXCL, 0666); if (fd < 0) { error("Writing %s", lock_filename);