Skip to content

Commit

Permalink
read_loose_refs(): simplify function logic
Browse files Browse the repository at this point in the history
Make it clearer that there are two possible ways to read the
reference, but that we handle read errors uniformly regardless of
which way it was read.

This refactoring also makes the following change easier to implement.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Michael Haggerty authored and Junio C Hamano committed Jun 3, 2015
1 parent 8afc493 commit f551707
Showing 1 changed file with 12 additions and 7 deletions.
19 changes: 12 additions & 7 deletions refs.c
Original file line number Diff line number Diff line change
Expand Up @@ -1281,19 +1281,24 @@ static void read_loose_refs(const char *dirname, struct ref_dir *dir)
create_dir_entry(refs, refname.buf,
refname.len, 1));
} else {
int read_ok;

if (*refs->name) {
hashclr(sha1);
flag = 0;
if (resolve_gitlink_ref(refs->name, refname.buf, sha1) < 0) {
hashclr(sha1);
flag |= REF_ISBROKEN;
}
} else if (read_ref_full(refname.buf,
RESOLVE_REF_READING,
sha1, &flag)) {
read_ok = !resolve_gitlink_ref(refs->name,
refname.buf, sha1);
} else {
read_ok = !read_ref_full(refname.buf,
RESOLVE_REF_READING,
sha1, &flag);
}

if (!read_ok) {
hashclr(sha1);
flag |= REF_ISBROKEN;
}

if (check_refname_format(refname.buf,
REFNAME_ALLOW_ONELEVEL)) {
hashclr(sha1);
Expand Down

0 comments on commit f551707

Please sign in to comment.