Re: [PATCH v2] commit: check result of resolve_ref_unsafe
- From
Andrey Okoshkin <a.okoshkin@samsung.com>
- Date
- Oct 20, 2017, 10:40 UTC
- Message-ID
- <19dc9ff5-54f3-290a-2dc8-c0be8e4047eb@samsung.com>
- In-Reply-To
- <20171019174452.hd3c47ocducddvgr@sigill.intra.peff.net>
19.10.2017 20:44, Jeff King wrote:
Show 11 quoted lines
> On Thu, Oct 19, 2017 at 12:36:50PM +0300, Andrey Okoshkin wrote:
>
> Thanks, this looks good to me. One other possible minor improvement:
>
>> head = resolve_ref_unsafe("HEAD", 0, junk_oid.hash, NULL);
>> + if (!head)
>> + die(_("unable to resolve HEAD after creating commit"));
>
> Should we use die_errno() here to report the value of errno? I think
> resolve_ref_unsafe() should set it consistently (even an internal
> problem, like an illegally-formatted refname, yields EINVAL).Thanks, sounds relevant. Also as an alternative solution it's possible to use warning_errno (instead of die_errno) and continue with 'head' set to something like 'unreadable|bad HEAD'.
Show 17 quoted lines
> I grepped the code base looking for other instances of the same problem, > and found four of them. Patches to follow. > > Unlike this one, I ended up quietly returning an error in most cases. > The individual commit messages discuss the reasoning for each case, but > I do wonder if we ought to simply die() in each case out of an abundance > of caution (either the repo has a broken symref, or some weird > filesystem error occurred, but either way it may be best not to > continue). I dunno. > > These are all independent, so can be applied in any order or combination > with respect to each other and to your patch. > > [1/4]: test-ref-store: avoid passing NULL to printf > [2/4]: remote: handle broken symrefs > [3/4]: log: handle broken HEAD in decoration check > [4/4]: worktree: handle broken symrefs in find_shared_symref()
Good changes, it's better to apply.
-- Best regards, Andrey