Merge branch 'jk/cleanup-failed-clone' into maint
authorJunio C Hamano <gitster@pobox.com>
Sat, 28 Mar 2015 16:33:09 +0000 (09:33 -0700)
committerJunio C Hamano <gitster@pobox.com>
Sat, 28 Mar 2015 16:33:09 +0000 (09:33 -0700)
An failure early in the "git clone" that started creating the
working tree and repository could have resulted in some directories
and files left without getting cleaned up.

* jk/cleanup-failed-clone:
clone: drop period from end of die_errno message
clone: initialize atexit cleanup handler earlier

builtin/clone.c
index 316c75d0b342d039696608c18adfabaa3366b0e7..2d77a2de4f3d3c73019b0b9873048f2d5747a378 100644 (file)
@@ -842,20 +842,21 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
                git_dir = mkpathdup("%s/.git", dir);
        }
 
+       atexit(remove_junk);
+       sigchain_push_common(remove_junk_on_signal);
+
        if (!option_bare) {
-               junk_work_tree = work_tree;
                if (safe_create_leading_directories_const(work_tree) < 0)
                        die_errno(_("could not create leading directories of '%s'"),
                                  work_tree);
                if (!dest_exists && mkdir(work_tree, 0777))
-                       die_errno(_("could not create work tree dir '%s'."),
+                       die_errno(_("could not create work tree dir '%s'"),
                                  work_tree);
+               junk_work_tree = work_tree;
                set_git_work_tree(work_tree);
        }
-       junk_git_dir = git_dir;
-       atexit(remove_junk);
-       sigchain_push_common(remove_junk_on_signal);
 
+       junk_git_dir = git_dir;
        if (safe_create_leading_directories_const(git_dir) < 0)
                die(_("could not create leading directories of '%s'"), git_dir);