git-commit-vandalism/t/helper/test-partial-clone.c
Elijah Newren 61a7b98264 treewide: remove cache.h inclusion due to setup.h changes
By moving several declarations to setup.h, the previous patch made it
possible to remove the include of cache.h in several source files.  Do
so.

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2023-03-21 10:56:54 -07:00

45 lines
1.1 KiB
C

#include "test-tool.h"
#include "hex.h"
#include "repository.h"
#include "object-store.h"
#include "setup.h"
/*
* Prints the size of the object corresponding to the given hash in a specific
* gitdir. This is similar to "git -C gitdir cat-file -s", except that this
* exercises the code that accesses the object of an arbitrary repository that
* is not the_repository. ("git -C gitdir" makes it so that the_repository is
* the one in gitdir.)
*/
static void object_info(const char *gitdir, const char *oid_hex)
{
struct repository r;
struct object_id oid;
unsigned long size;
struct object_info oi = {.sizep = &size};
const char *p;
if (repo_init(&r, gitdir, NULL))
die("could not init repo");
if (parse_oid_hex(oid_hex, &oid, &p))
die("could not parse oid");
if (oid_object_info_extended(&r, &oid, &oi, 0))
die("could not obtain object info");
printf("%d\n", (int) size);
}
int cmd__partial_clone(int argc, const char **argv)
{
setup_git_directory();
if (argc < 4)
die("too few arguments");
if (!strcmp(argv[1], "object-info"))
object_info(argv[2], argv[3]);
else
die("invalid argument '%s'", argv[1]);
return 0;
}