[PATCH] ignore trailing slash when creating leading directories
From: Clemens Buchacher <hidden>
Date: 2016-06-15 22:45:16
Subsystem:
the rest · Maintainer:
Linus Torvalds
'git clone <repo> path/' (note the trailing slash) fails, because the entire path is interpreted as leading directories. So when mkdir tries to create the actual path, it already exists. This makes sure a trailing slash is ignored. Signed-off-by: Clemens Buchacher <redacted> --- builtin-clone.c | 7 ++++--- sha1_file.c | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/builtin-clone.c b/builtin-clone.c
index c0e3086..4f945ad 100644
--- a/builtin-clone.c
+++ b/builtin-clone.c@@ -422,10 +422,11 @@ int cmd_clone(int argc, const char **argv, const char *prefix) if (!option_bare) { junk_work_tree = work_tree; if (safe_create_leading_directories_const(work_tree) < 0) - die("could not create leading directories of '%s'", - work_tree); + die("could not create leading directories of '%s': %s", + work_tree, strerror(errno)); if (mkdir(work_tree, 0755)) - die("could not create work tree dir '%s'.", work_tree); + die("could not create work tree dir '%s': %s.", + work_tree, strerror(errno)); set_git_work_tree(work_tree); } junk_git_dir = git_dir;
diff --git a/sha1_file.c b/sha1_file.c
index 9ee1ed1..3cb9414 100644
--- a/sha1_file.c
+++ b/sha1_file.c@@ -97,7 +97,7 @@ int safe_create_leading_directories(char *path) while (pos) { pos = strchr(pos, '/'); - if (!pos) + if (!pos || !*(pos + 1)) break; *pos = 0; if (!stat(path, &st)) {
--
1.6.0