Skip to content

Commit

Permalink
resolve_ref(): expose REF_ISBROKEN flag
Browse files Browse the repository at this point in the history
Instead of keeping this as an internal API, let the callers find
out the reason why resolve_ref() returned NULL is not because there
was no such file in $GIT_DIR but because a file was corrupt.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Junio C Hamano committed Oct 19, 2011
1 parent ff74f7f commit 98ac34b
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 9 deletions.
13 changes: 6 additions & 7 deletions refs.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,8 @@
#include "tag.h"
#include "dir.h"

/* ISSYMREF=01 and ISPACKED=02 are public interfaces */
#define REF_KNOWS_PEELED 04
#define REF_BROKEN 010
/* ISSYMREF=0x01, ISPACKED=0x02 and ISBROKEN=0x04 are public interfaces */
#define REF_KNOWS_PEELED 0x10

struct ref_list {
struct ref_list *next;
Expand Down Expand Up @@ -309,12 +308,12 @@ static struct ref_list *get_ref_dir(const char *submodule, const char *base,
flag = 0;
if (resolve_gitlink_ref(submodule, ref, sha1) < 0) {
hashclr(sha1);
flag |= REF_BROKEN;
flag |= REF_ISBROKEN;
}
} else
if (!resolve_ref(ref, sha1, 1, &flag)) {
hashclr(sha1);
flag |= REF_BROKEN;
flag |= REF_ISBROKEN;
}
list = add_ref(ref, sha1, flag, list, NULL);
}
Expand Down Expand Up @@ -613,8 +612,8 @@ static int do_one_ref(const char *base, each_ref_fn fn, int trim,
return 0;

if (!(flags & DO_FOR_EACH_INCLUDE_BROKEN)) {
if (entry->flag & REF_BROKEN)
return 0; /* ignore dangling symref */
if (entry->flag & REF_ISBROKEN)
return 0; /* ignore broken refs e.g. dangling symref */
if (!has_sha1_file(entry->sha1)) {
error("%s does not point to a valid object!", entry->name);
return 0;
Expand Down
5 changes: 3 additions & 2 deletions refs.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,9 @@ struct ref_lock {
int force_write;
};

#define REF_ISSYMREF 01
#define REF_ISPACKED 02
#define REF_ISSYMREF 0x01
#define REF_ISPACKED 0x02
#define REF_ISBROKEN 0x04

/*
* Calls the specified function for each ref file until it returns nonzero,
Expand Down

0 comments on commit 98ac34b

Please sign in to comment.