clone: leave repo in place after checkout errors
commitd3b34622f699ff14646de4ec1b1ab9afb0bcb056
authorJeff King <peff@peff.net>
Tue, 26 Mar 2013 22:22:09 +0000 (26 18:22 -0400)
committerJunio C Hamano <gitster@pobox.com>
Fri, 29 Mar 2013 22:20:55 +0000 (29 15:20 -0700)
treee6f2b16684bd09acf7942899db80af78d970dae6
parent0433ad128c59f233046b3f8a68246ca3a8a77af8
clone: leave repo in place after checkout errors

If we manage to clone a remote repository but run into an
error in the checkout, it is probably sane to leave the repo
directory in place. That lets the user examine the situation
without spending time to re-clone from the remote (which may
be a lengthy process).

Rather than try to convert each die() from the checkout code
path into an error(), we simply set a flag that tells the
"remove_junk" atexit function to print a helpful message and
leave the repo in place.

Note that the test added in this patch actually passes
without the code change. The reason is that the cleanup code
is buggy; we chdir into the working tree for the checkout,
but still may use relative paths to remove the directories
(which means if you cloned into "foo", we would accidentally
remove "foo" from the working tree!).  There's no point in
fixing it now, since this patch means we will never try to
remove anything after the chdir, anyway.

[jc: replaced the message with a more succinct version from
Jonathan]

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/clone.c
t/t1060-object-corruption.sh