Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
packed_read_raw_ref(): new function, replacing `resolve_packed_ref()`
author
Michael Haggerty
<mhagger@alum.mit.edu>
Fri, 23 Jun 2017 07:01:36 +0000
(09:01 +0200)
committer
Junio C Hamano
<gitster@pobox.com>
Fri, 23 Jun 2017 20:27:32 +0000
(13:27 -0700)
Add a new function, `packed_read_raw_ref()`, which is nearly a
`read_raw_ref_fn`. Use it in place of `resolve_packed_ref()`.
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
refs/files-backend.c
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
38b86e8
)
diff --git
a/refs/files-backend.c
b/refs/files-backend.c
index 0490cc087e66f83d511a55cba789873422cc5a36..346794cf7cbbac0ac56dd51b7a4b546cd7bbac6d 100644
(file)
--- a/
refs/files-backend.c
+++ b/
refs/files-backend.c
@@
-608,27
+608,23
@@
static struct ref_entry *get_packed_ref(struct packed_ref_store *refs,
return find_ref_entry(get_packed_refs(refs), refname);
}
return find_ref_entry(get_packed_refs(refs), refname);
}
-/*
- * A loose ref file doesn't exist; check for a packed ref.
- */
-static int resolve_packed_ref(struct files_ref_store *refs,
- const char *refname,
- unsigned char *sha1, unsigned int *flags)
+static int packed_read_raw_ref(struct packed_ref_store *refs,
+ const char *refname, unsigned char *sha1,
+ struct strbuf *referent, unsigned int *type)
{
struct ref_entry *entry;
{
struct ref_entry *entry;
- /*
- * The loose reference file does not exist; check for a packed
- * reference.
- */
- entry = get_packed_ref(refs->packed_ref_store, refname);
- if (entry) {
- hashcpy(sha1, entry->u.value.oid.hash);
- *flags |= REF_ISPACKED;
- return 0;
+ *type = 0;
+
+ entry = get_packed_ref(refs, refname);
+ if (!entry) {
+ errno = ENOENT;
+ return -1;
}
}
- /* refname is not a packed reference. */
- return -1;
+
+ hashcpy(sha1, entry->u.value.oid.hash);
+ *type = REF_ISPACKED;
+ return 0;
}
static int files_read_raw_ref(struct ref_store *ref_store,
}
static int files_read_raw_ref(struct ref_store *ref_store,
@@
-674,7
+670,8
@@
static int files_read_raw_ref(struct ref_store *ref_store,
if (lstat(path, &st) < 0) {
if (errno != ENOENT)
goto out;
if (lstat(path, &st) < 0) {
if (errno != ENOENT)
goto out;
- if (resolve_packed_ref(refs, refname, sha1, type)) {
+ if (packed_read_raw_ref(refs->packed_ref_store, refname,
+ sha1, referent, type)) {
errno = ENOENT;
goto out;
}
errno = ENOENT;
goto out;
}
@@
-713,7
+710,8
@@
static int files_read_raw_ref(struct ref_store *ref_store,
* ref is supposed to be, there could still be a
* packed ref:
*/
* ref is supposed to be, there could still be a
* packed ref:
*/
- if (resolve_packed_ref(refs, refname, sha1, type)) {
+ if (packed_read_raw_ref(refs->packed_ref_store, refname,
+ sha1, referent, type)) {
errno = EISDIR;
goto out;
}
errno = EISDIR;
goto out;
}