transport: drop refnames from for_each_alternate_ref
authorJeff King <peff@peff.net>
Mon, 8 Oct 2018 18:09:23 +0000 (11:09 -0700)
committerJunio C Hamano <gitster@pobox.com>
Tue, 9 Oct 2018 05:30:02 +0000 (14:30 +0900)
None of the current callers use the refname parameter we pass to their
callbacks. In theory somebody _could_ do so, but it's actually quite
weird if you think about it: it's a ref in somebody else's repository.
So the name has no meaning locally, and in fact there may be duplicates
if there are multiple alternates.

The users of this interface really only care about seeing some ref tips,
since that promises that the alternate has the full commit graph
reachable from there. So let's keep the information we pass back to the
bare minimum.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Taylor Blau <me@ttaylorr.com>
Acked-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 c17ce94e12ee34c5b822b0e09fcd6d7264e759ad..edbc76fd87023314b29805fd21757258a3b7190b 100644 (file)
@@ -280,8 +280,7 @@ static int show_ref_cb(const char *path_full, const struct object_id *oid,
        return 0;
 }
 
-static void show_one_alternate_ref(const char *refname,
-                                  const struct object_id *oid,
+static void show_one_alternate_ref(const struct object_id *oid,
                                   void *data)
 {
        struct oidset *seen = data;
index 88a078e9befd281cf5f03e9e64615b14ca768a35..c5aaedf89aee6e2fb584f7defdc0cd1488e534c0 100644 (file)
@@ -76,8 +76,7 @@ struct alternate_object_cache {
        size_t nr, alloc;
 };
 
-static void cache_one_alternate(const char *refname,
-                               const struct object_id *oid,
+static void cache_one_alternate(const struct object_id *oid,
                                void *vcache)
 {
        struct alternate_object_cache *cache = vcache;
index 06ffea277460d68694aa4700b269601b56dd46ce..1ae297349c4413b4f06cb21c319bf3ee008e0850 100644 (file)
@@ -1336,7 +1336,7 @@ static void read_alternate_refs(const char *path,
        cmd.git_cmd = 1;
        argv_array_pushf(&cmd.args, "--git-dir=%s", path);
        argv_array_push(&cmd.args, "for-each-ref");
-       argv_array_push(&cmd.args, "--format=%(objectname) %(refname)");
+       argv_array_push(&cmd.args, "--format=%(objectname)");
        cmd.env = local_repo_env;
        cmd.out = -1;
 
@@ -1348,13 +1348,13 @@ static void read_alternate_refs(const char *path,
                struct object_id oid;
 
                if (get_oid_hex(line.buf, &oid) ||
-                   line.buf[GIT_SHA1_HEXSZ] != ' ') {
+                   line.buf[GIT_SHA1_HEXSZ]) {
                        warning(_("invalid line while parsing alternate refs: %s"),
                                line.buf);
                        break;
                }
 
-               cb(line.buf + GIT_SHA1_HEXSZ + 1, &oid, data);
+               cb(&oid, data);
        }
 
        fclose(fh);
index 01e717c29ee6e0f0724b5757ebc7538a72e7e807..9baeca2d7a34cf064a632a7677429f477cb8e014 100644 (file)
@@ -261,6 +261,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 char *refname, const struct object_id *oid, void *);
+typedef void alternate_ref_fn(const struct object_id *oid, void *);
 extern void for_each_alternate_ref(alternate_ref_fn, void *);
 #endif