summaryrefslogtreecommitdiff
path: root/builtin-checkout.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2008-11-09 18:56:26 (GMT)
committerJunio C Hamano <gitster@pobox.com>2008-11-09 18:56:26 (GMT)
commita9645b780b698703cd7dee25051d6ce39b0544c6 (patch)
tree4a5d6f044bfa66ce73b105089813a593637cbf1c /builtin-checkout.c
parentd2d188d92203997d260e8a21695b85c18b002d8f (diff)
parent5bcce8494a2ee09250404b8b086cbd62f9506703 (diff)
downloadgit-a9645b780b698703cd7dee25051d6ce39b0544c6.zip
git-a9645b780b698703cd7dee25051d6ce39b0544c6.tar.gz
git-a9645b780b698703cd7dee25051d6ce39b0544c6.tar.bz2
Merge branch 'maint'
* maint: Documentation: bisect: change a few instances of "git-cmd" to "git cmd" Documentation: rev-list: change a few instances of "git-cmd" to "git cmd" checkout: Don't crash when switching away from an invalid branch.
Diffstat (limited to 'builtin-checkout.c')
-rw-r--r--builtin-checkout.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/builtin-checkout.c b/builtin-checkout.c
index 57b94d2..06904c3 100644
--- a/builtin-checkout.c
+++ b/builtin-checkout.c
@@ -47,7 +47,7 @@ static int post_checkout_hook(struct commit *old, struct commit *new,
memset(&proc, 0, sizeof(proc));
argv[0] = name;
- argv[1] = xstrdup(sha1_to_hex(old->object.sha1));
+ argv[1] = xstrdup(sha1_to_hex(old ? old->object.sha1 : null_sha1));
argv[2] = xstrdup(sha1_to_hex(new->object.sha1));
argv[3] = changed ? "1" : "0";
argv[4] = NULL;
@@ -492,10 +492,10 @@ static void update_refs_for_switch(struct checkout_opts *opts,
}
old_desc = old->name;
- if (!old_desc)
+ if (!old_desc && old->commit)
old_desc = sha1_to_hex(old->commit->object.sha1);
strbuf_addf(&msg, "checkout: moving from %s to %s",
- old_desc, new->name);
+ old_desc ? old_desc : "(invalid)", new->name);
if (new->path) {
create_symref("HEAD", new->path, msg.buf);
@@ -551,7 +551,7 @@ static int switch_branches(struct checkout_opts *opts, struct branch_info *new)
* a new commit, we want to mention the old commit once more
* to remind the user that it might be lost.
*/
- if (!opts->quiet && !old.path && new->commit != old.commit)
+ if (!opts->quiet && !old.path && old.commit && new->commit != old.commit)
describe_detached_head("Previous HEAD position was", old.commit);
if (!old.commit) {