Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
packed_ref_cache: add a backlink to the associated `packed_ref_store`
author
Michael Haggerty
<mhagger@alum.mit.edu>
Wed, 13 Sep 2017 17:15:57 +0000
(19:15 +0200)
committer
Junio C Hamano
<gitster@pobox.com>
Thu, 14 Sep 2017 06:19:07 +0000
(15:19 +0900)
It will prove convenient in upcoming patches.
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
refs/packed-backend.c
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
157113c
)
diff --git
a/refs/packed-backend.c
b/refs/packed-backend.c
index e411501871d32827f60a89ca2d9a7eda39f1e5d3..a3d9210cb057bd64242a988a23e4aa5aad5730d5 100644
(file)
--- a/
refs/packed-backend.c
+++ b/
refs/packed-backend.c
@@
-7,7
+7,15
@@
#include "../iterator.h"
#include "../lockfile.h"
#include "../iterator.h"
#include "../lockfile.h"
+struct packed_ref_store;
+
struct packed_ref_cache {
struct packed_ref_cache {
+ /*
+ * A back-pointer to the packed_ref_store with which this
+ * cache is associated:
+ */
+ struct packed_ref_store *refs;
+
struct ref_cache *cache;
/*
struct ref_cache *cache;
/*
@@
-154,7
+162,7
@@
static const char *parse_ref_line(struct strbuf *line, struct object_id *oid)
}
/*
}
/*
- * Read from
`packed_refs_file`
into a newly-allocated
+ * Read from
the `packed-refs` file
into a newly-allocated
* `packed_ref_cache` and return it. The return value will already
* have its reference count incremented.
*
* `packed_ref_cache` and return it. The return value will already
* have its reference count incremented.
*
@@
-182,7
+190,7
@@
static const char *parse_ref_line(struct strbuf *line, struct object_id *oid)
* compatibility with older clients, but we do not require it
* (i.e., "peeled" is a no-op if "fully-peeled" is set).
*/
* compatibility with older clients, but we do not require it
* (i.e., "peeled" is a no-op if "fully-peeled" is set).
*/
-static struct packed_ref_cache *read_packed_refs(
const char *packed_refs_file
)
+static struct packed_ref_cache *read_packed_refs(
struct packed_ref_store *refs
)
{
FILE *f;
struct packed_ref_cache *packed_refs = xcalloc(1, sizeof(*packed_refs));
{
FILE *f;
struct packed_ref_cache *packed_refs = xcalloc(1, sizeof(*packed_refs));
@@
-191,11
+199,12
@@
static struct packed_ref_cache *read_packed_refs(const char *packed_refs_file)
enum { PEELED_NONE, PEELED_TAGS, PEELED_FULLY } peeled = PEELED_NONE;
struct ref_dir *dir;
enum { PEELED_NONE, PEELED_TAGS, PEELED_FULLY } peeled = PEELED_NONE;
struct ref_dir *dir;
+ packed_refs->refs = refs;
acquire_packed_ref_cache(packed_refs);
packed_refs->cache = create_ref_cache(NULL, NULL);
packed_refs->cache->root->flag &= ~REF_INCOMPLETE;
acquire_packed_ref_cache(packed_refs);
packed_refs->cache = create_ref_cache(NULL, NULL);
packed_refs->cache->root->flag &= ~REF_INCOMPLETE;
- f = fopen(
packed_refs_file
, "r");
+ f = fopen(
refs->path
, "r");
if (!f) {
if (errno == ENOENT) {
/*
if (!f) {
if (errno == ENOENT) {
/*
@@
-205,7
+214,7
@@
static struct packed_ref_cache *read_packed_refs(const char *packed_refs_file)
*/
return packed_refs;
} else {
*/
return packed_refs;
} else {
- die_errno("couldn't read %s",
packed_refs_file
);
+ die_errno("couldn't read %s",
refs->path
);
}
}
}
}
@@
-218,7
+227,7
@@
static struct packed_ref_cache *read_packed_refs(const char *packed_refs_file)
const char *traits;
if (!line.len || line.buf[line.len - 1] != '\n')
const char *traits;
if (!line.len || line.buf[line.len - 1] != '\n')
- die("unterminated line in %s: %s",
packed_refs_file
, line.buf);
+ die("unterminated line in %s: %s",
refs->path
, line.buf);
if (skip_prefix(line.buf, "# pack-refs with:", &traits)) {
if (strstr(traits, " fully-peeled "))
if (skip_prefix(line.buf, "# pack-refs with:", &traits)) {
if (strstr(traits, " fully-peeled "))
@@
-258,7
+267,7
@@
static struct packed_ref_cache *read_packed_refs(const char *packed_refs_file)
last->flag |= REF_KNOWS_PEELED;
} else {
strbuf_setlen(&line, line.len - 1);
last->flag |= REF_KNOWS_PEELED;
} else {
strbuf_setlen(&line, line.len - 1);
- die("unexpected line in %s: %s",
packed_refs_file
, line.buf);
+ die("unexpected line in %s: %s",
refs->path
, line.buf);
}
}
}
}
@@
-293,7
+302,7
@@
static struct packed_ref_cache *get_packed_ref_cache(struct packed_ref_store *re
validate_packed_ref_cache(refs);
if (!refs->cache)
validate_packed_ref_cache(refs);
if (!refs->cache)
- refs->cache = read_packed_refs(refs
->path
);
+ refs->cache = read_packed_refs(refs);
return refs->cache;
}
return refs->cache;
}