]> git.ipfire.org Git - thirdparty/git.git/commitdiff
cat-file: split ordered/unordered batch-all-objects callbacks
authorJeff King <peff@peff.net>
Tue, 5 Oct 2021 20:36:17 +0000 (16:36 -0400)
committerJunio C Hamano <gitster@pobox.com>
Fri, 8 Oct 2021 22:45:14 +0000 (15:45 -0700)
When we originally added --batch-all-objects, it stuffed everything into
an oid_array(), and then iterated over that array with a callback to
write the actual output.

When we later added --unordered, that code path writes immediately as we
discover each object, but just calls the same batch_object_cb() as our
entry point to the writing code. That callback has a narrow interface;
it only receives the oid, but we know much more about each object in the
unordered write (which we'll make use of in the next patch). So let's
just call batch_object_write() directly. The callback wasn't saving us
much effort.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/cat-file.c

index b713be545ee41bc0a5bf27ff79451f829e6462d4..b533935d5c418f14fbb138d4d427a3e2bbf9995c 100644 (file)
@@ -470,7 +470,9 @@ static int batch_unordered_object(const struct object_id *oid, void *vdata)
        if (oidset_insert(data->seen, oid))
                return 0;
 
-       return batch_object_cb(oid, data);
+       oidcpy(&data->expand->oid, oid);
+       batch_object_write(NULL, data->scratch, data->opt, data->expand);
+       return 0;
 }
 
 static int batch_unordered_loose(const struct object_id *oid,