aboutsummaryrefslogtreecommitdiff
path: root/builtin-clone.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2008-09-03 16:08:23 -0700
committerJunio C Hamano <gitster@pobox.com>2008-09-03 16:08:23 -0700
commit9b8ae93ad92efef59649a3a7c4bed162d2051059 (patch)
tree0661cd870dec63e098efef7e1fb7db31505dbbb2 /builtin-clone.c
parent01914577ed42498d9e268684949d699e0272e964 (diff)
parentde5d560c99c96e2955fb4d1d8a8fa6b469926292 (diff)
downloadgit-9b8ae93ad92efef59649a3a7c4bed162d2051059.tar.gz
git-9b8ae93ad92efef59649a3a7c4bed162d2051059.tar.xz
Merge branch 'maint'
* maint: Start 1.6.0.2 maintenance cycle tests: use "git xyzzy" form (t7200 - t9001) tests: use "git xyzzy" form (t7000 - t7199) Fix passwd(5) ref and reflect that commit doens't use commit-tree improve handling of sideband message display tests: use "git xyzzy" form (t3600 - t6999) tests: use "git xyzzy" form (t0000 - t3599) checkout: fix message when leaving detached HEAD clone: fix creation of explicitly named target directory 'git foo' program identifies itself without dash in die() messages setup_git_directory(): fix move to worktree toplevel directory update-index: fix worktree setup Start conforming code to "git subcmd" style read-tree: setup worktree if merge is required grep: fix worktree setup diff*: fix worktree setup Conflicts: RelNotes t/t3900-i18n-commit.sh t/t7003-filter-branch.sh
Diffstat (limited to 'builtin-clone.c')
-rw-r--r--builtin-clone.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/builtin-clone.c b/builtin-clone.c
index f44eceab3..c8435295c 100644
--- a/builtin-clone.c
+++ b/builtin-clone.c
@@ -147,6 +147,15 @@ static int is_directory(const char *path)
return !stat(path, &buf) && S_ISDIR(buf.st_mode);
}
+static void strip_trailing_slashes(char *dir)
+{
+ char *end = dir + strlen(dir);
+
+ while (dir < end - 1 && is_dir_sep(end[-1]))
+ end--;
+ *end = '\0';
+}
+
static void setup_reference(const char *repo)
{
const char *ref_git;
@@ -397,6 +406,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
dir = xstrdup(argv[1]);
else
dir = guess_dir_name(repo_name, is_bundle, option_bare);
+ strip_trailing_slashes(dir);
if (!stat(dir, &buf))
die("destination directory '%s' already exists.", dir);
@@ -422,10 +432,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;