Re: [PATCH] checkout: Don't crash when switching away from an invalid branch.
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Nov 7, 2008, 18:05 UTC
- Message-ID
- <alpine.DEB.1.00.0811071903300.30769@pacific.mpi-cbg.de>
- In-Reply-To
- <871vxnbhbh.fsf@wine.dyndns.org>
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.
Show 11 quoted lines
> 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.
Show 14 quoted lines
> @@ -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)" ?
> diff --git a/t/t2011-checkout-invalid-head.sh b/t/t2011-checkout-invalid-head.sh > new file mode 100755
Nice!
Thank you, Dscho