summaryrefslogtreecommitdiff
path: root/refs.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2011-10-19 13:45:50 -0700
committerJunio C Hamano <gitster@pobox.com>2011-10-19 13:58:15 -0700
commit98ac34b2b1968e16fbf7f6122a53b73c6caaff49 (patch)
tree7d3e9a15ec0968b13d6bed9cd463893249280586 /refs.c
parentff74f7f1187cbf1b46e85ed1bde1f194991f919c (diff)
downloadgit-98ac34b2b1968e16fbf7f6122a53b73c6caaff49.tar.gz
resolve_ref(): expose REF_ISBROKEN flag
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>
Diffstat (limited to 'refs.c')
-rw-r--r--refs.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/refs.c b/refs.c
index e3692bd3d8..30e08482a0 100644
--- a/refs.c
+++ b/refs.c
@@ -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;
@@ -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);
}
@@ -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;