'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 <drizzd@xxxxxx> --- 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 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html