1
0
mirror of https://github.com/git/git.git synced 2024-09-26 02:11:45 +02:00

read_loose_refs(): simplify function logic

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>
This commit is contained in:
Michael Haggerty 2015-06-03 15:51:58 +02:00 committed by Junio C Hamano
parent 8afc493d11
commit f5517074f8

19
refs.c
View File

@ -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);