summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Jeff King <peff@peff.net>2017-02-08 15:52:57 -0500
committerLibravatar Junio C Hamano <gitster@pobox.com>2017-02-08 15:39:55 -0800
commit2429d63a46b141bb5006b8c1ea82e2d0163ab626 (patch)
treef5329a7ce5f3ed9671173f201e27b37c39575358
parentfor_each_alternate_ref: use strbuf for path allocation (diff)
downloadtgif-2429d63a46b141bb5006b8c1ea82e2d0163ab626.tar.xz
for_each_alternate_ref: pass name/oid instead of ref struct
Breaking down the fields in the interface makes it easier to change the backend of for_each_alternate_ref to something that doesn't use "struct ref" internally. The only field that callers actually look at is the oid, anyway. The refname is kept in the interface as a plausible thing for future code to want. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--builtin/receive-pack.c6
-rw-r--r--fetch-pack.c12
-rw-r--r--transport.c2
-rw-r--r--transport.h2
4 files changed, 14 insertions, 8 deletions
diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c
index 1dbb8a0692..d21332d9e7 100644
--- a/builtin/receive-pack.c
+++ b/builtin/receive-pack.c
@@ -277,10 +277,12 @@ static int show_one_alternate_sha1(const unsigned char sha1[20], void *unused)
return 0;
}
-static void collect_one_alternate_ref(const struct ref *ref, void *data)
+static void collect_one_alternate_ref(const char *refname,
+ const struct object_id *oid,
+ void *data)
{
struct sha1_array *sa = data;
- sha1_array_append(sa, ref->old_oid.hash);
+ sha1_array_append(sa, oid->hash);
}
static void write_head_info(void)
diff --git a/fetch-pack.c b/fetch-pack.c
index 601f0779a1..54f84c5733 100644
--- a/fetch-pack.c
+++ b/fetch-pack.c
@@ -253,9 +253,11 @@ static void send_request(struct fetch_pack_args *args,
write_or_die(fd, buf->buf, buf->len);
}
-static void insert_one_alternate_ref(const struct ref *ref, void *unused)
+static void insert_one_alternate_ref(const char *refname,
+ const struct object_id *oid,
+ void *unused)
{
- rev_list_insert_ref(NULL, ref->old_oid.hash);
+ rev_list_insert_ref(NULL, oid->hash);
}
#define INITIAL_FLUSH 16
@@ -619,9 +621,11 @@ static void filter_refs(struct fetch_pack_args *args,
*refs = newlist;
}
-static void mark_alternate_complete(const struct ref *ref, void *unused)
+static void mark_alternate_complete(const char *refname,
+ const struct object_id *oid,
+ void *unused)
{
- mark_complete(ref->old_oid.hash);
+ mark_complete(oid->hash);
}
static int everything_local(struct fetch_pack_args *args,
diff --git a/transport.c b/transport.c
index 6b7847131f..c87147046f 100644
--- a/transport.c
+++ b/transport.c
@@ -1238,7 +1238,7 @@ static int refs_from_alternate_cb(struct alternate_object_database *e,
for (extra = transport_get_remote_refs(transport);
extra;
extra = extra->next)
- cb->fn(extra, cb->data);
+ cb->fn(extra->name, &extra->old_oid, cb->data);
transport_disconnect(transport);
out:
strbuf_release(&path);
diff --git a/transport.h b/transport.h
index e597b31b38..bc5571574b 100644
--- a/transport.h
+++ b/transport.h
@@ -255,6 +255,6 @@ int transport_refs_pushed(struct ref *ref);
void transport_print_push_status(const char *dest, struct ref *refs,
int verbose, int porcelain, unsigned int *reject_reasons);
-typedef void alternate_ref_fn(const struct ref *, void *);
+typedef void alternate_ref_fn(const char *refname, const struct object_id *oid, void *);
extern void for_each_alternate_ref(alternate_ref_fn, void *);
#endif