Thread (2 messages) flat view 2 messages, 2 authors, 2016-06-15

Re: [PATCH] checkout: Don't crash when switching away from an invalid branch.

From: Johannes Schindelin <hidden>
Date: 2016-06-15 22:45:37

Hi,

On Fri, 7 Nov 2008, Alexandre Julliard wrote:
I have a tree where for some reason HEAD was pointing to an invalid 
commit. I'm not sure how this happened, but git checkout should be able 
to recover from that situation without crashing.
Agree.
quoted hunk ↗ jump to hunk
diff --git a/builtin-checkout.c b/builtin-checkout.c
index 57b94d2..7c1b8cd 100644
--- a/builtin-checkout.c
+++ b/builtin-checkout.c
@@ -47,7 +47,8 @@ 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] = old ? xstrdup(sha1_to_hex(old->object.sha1))
+		      : "0000000000000000000000000000000000000000";
I guess you want to use the variable null_sha1 here.
quoted hunk ↗ jump to hunk
@@ -492,10 +493,13 @@ 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);
+	if (old_desc)
+		strbuf_addf(&msg, "checkout: moving from %s to %s",
+			    old_desc, new->name);
+	else
+		strbuf_addf(&msg, "checkout: moving to %s", new->name);
Why not
		old_desc ? old_desc : "(invalid)"
?
quoted hunk ↗ jump to hunk
diff --git a/t/t2011-checkout-invalid-head.sh b/t/t2011-checkout-invalid-head.sh
new file mode 100755
Nice!

Thank you,
Dscho
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help