for_each_alternate_ref: pass name/oid instead of ref struct
authorJeff King <peff@peff.net>
Wed, 8 Feb 2017 20:52:57 +0000 (15:52 -0500)
committerJunio C Hamano <gitster@pobox.com>
Wed, 8 Feb 2017 23:39:55 +0000 (15:39 -0800)
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>
builtin/receive-pack.c
fetch-pack.c
transport.c
transport.h
index 1dbb8a069225be1e9d9fe27ad4b83a8bd66ca511..d21332d9e7e7cc179040db3dc721b7f164da6160 100644 (file)
@@ -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)
index 601f0779a1903a2b860412e3404e4ea8e4bce573..54f84c57334d89e796472dfc46952cf84fc45811 100644 (file)
@@ -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,
index 6b7847131f2aac0b4e37c899510c3a6cc94aa5e0..c87147046f9d87976f6262f69b85f74998c48009 100644 (file)
@@ -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);
index e597b31b38d9d7bb374af203b80e4b6e83abbc3d..bc5571574b67803249567bcee501dfcc342b0b0f 100644 (file)
@@ -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