Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.kernel.org/pub/scm/git/git.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>2021-10-16 12:39:23 +0300
committerJunio C Hamano <gitster@pobox.com>2021-10-16 21:17:04 +0300
commited90f04155df1ec757b241ae3f45889c05efae26 (patch)
treec9d58e7acc1966c43c79ce9e24b8f12a3e185f0c /sequencer.c
parent1e3ccb552f3d9166009ca2bc40b27bbc0c0e2b78 (diff)
refs API: make resolve_ref_unsafe() not set errno
Change the resolve_ref_unsafe() wrapper function to use the underlying refs_werrres_ref_unsafe() directly. From a reading of the callers I determined that the only one who cared about errno was a sequencer.c caller added in e47c6cafcb5 (commit: move print_commit_summary() to libgit, 2017-11-24), I'm migrating it to using refs_werrres_ref_unsafe() directly. This adds another "set errno" instance, but in this case it's OK and idiomatic. We are setting it just before calling die_errno(). We could have some hypothetical die_errno_var(&saved_errno, ...) here, but I don't think it's worth it. The problem with errno is subtle action at distance, not this sort of thing. We already use this pattern in a couple of places in wrapper.c Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'sequencer.c')
-rw-r--r--sequencer.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/sequencer.c b/sequencer.c
index fac0b5162f..1223dc2d2b 100644
--- a/sequencer.c
+++ b/sequencer.c
@@ -1282,6 +1282,8 @@ void print_commit_summary(struct repository *r,
struct pretty_print_context pctx = {0};
struct strbuf author_ident = STRBUF_INIT;
struct strbuf committer_ident = STRBUF_INIT;
+ struct ref_store *refs;
+ int resolve_errno;
commit = lookup_commit(r, oid);
if (!commit)
@@ -1331,9 +1333,13 @@ void print_commit_summary(struct repository *r,
rev.diffopt.break_opt = 0;
diff_setup_done(&rev.diffopt);
- head = resolve_ref_unsafe("HEAD", 0, NULL, NULL);
- if (!head)
+ refs = get_main_ref_store(the_repository);
+ head = refs_werrres_ref_unsafe(refs, "HEAD", 0, NULL, NULL,
+ &resolve_errno);
+ if (!head) {
+ errno = resolve_errno;
die_errno(_("unable to resolve HEAD after creating commit"));
+ }
if (!strcmp(head, "HEAD"))
head = _("detached HEAD");
else