diff options
author | Junio C Hamano <gitster@pobox.com> | 2008-09-03 16:08:23 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-09-03 16:08:23 -0700 |
commit | 9b8ae93ad92efef59649a3a7c4bed162d2051059 (patch) | |
tree | 0661cd870dec63e098efef7e1fb7db31505dbbb2 /builtin-clone.c | |
parent | 01914577ed42498d9e268684949d699e0272e964 (diff) | |
parent | de5d560c99c96e2955fb4d1d8a8fa6b469926292 (diff) | |
download | git-9b8ae93ad92efef59649a3a7c4bed162d2051059.tar.gz |
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.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/builtin-clone.c b/builtin-clone.c index f44eceab3a..c8435295ce 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; |