Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
resolve_ref(): expose REF_ISBROKEN flag
author
Junio C Hamano
<gitster@pobox.com>
Wed, 19 Oct 2011 20:45:50 +0000
(13:45 -0700)
committer
Junio C Hamano
<gitster@pobox.com>
Wed, 19 Oct 2011 20:58:15 +0000
(13:58 -0700)
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>
refs.c
patch
|
blob
|
history
refs.h
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
ff74f7f
)
diff --git
a/refs.c
b/refs.c
index e3692bd3d8cec6a03721bbda91466bfca34b8783..30e08482a076c3a878588f93b7be680e891fbe12 100644
(file)
--- a/
refs.c
+++ b/
refs.c
@@
-4,9
+4,8
@@
#include "tag.h"
#include "dir.h"
#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;
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 = 0;
if (resolve_gitlink_ref(submodule, ref, sha1) < 0) {
hashclr(sha1);
- flag |= REF_BROKEN;
+ flag |= REF_
IS
BROKEN;
}
} else
if (!resolve_ref(ref, sha1, 1, &flag)) {
hashclr(sha1);
}
} else
if (!resolve_ref(ref, sha1, 1, &flag)) {
hashclr(sha1);
- flag |= REF_BROKEN;
+ flag |= REF_
IS
BROKEN;
}
list = add_ref(ref, sha1, flag, list, NULL);
}
}
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)) {
return 0;
if (!(flags & DO_FOR_EACH_INCLUDE_BROKEN)) {
- if (entry->flag & REF_BROKEN)
- return 0; /* ignore dangling symref */
+ if (entry->flag & REF_
IS
BROKEN)
+ 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;
if (!has_sha1_file(entry->sha1)) {
error("%s does not point to a valid object!", entry->name);
return 0;
diff --git
a/refs.h
b/refs.h
index d5ac133336dc0da45cd916207d12a5e0e4237ae3..e4578856d7c2425ac26df025e1027198f9cb63a5 100644
(file)
--- a/
refs.h
+++ b/
refs.h
@@
-10,8
+10,9
@@
struct ref_lock {
int force_write;
};
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,
/*
* Calls the specified function for each ref file until it returns nonzero,