t/helper: add 'pack-mtimes' test-tool
In the next patch, we will implement and test support for writing a cruft pack via a special mode of `git pack-objects`. To make sure that objects are written with the correct timestamps, and a new test-tool that can dump the object names and corresponding timestamps from a given `.mtimes` file. Signed-off-by: Taylor Blau <me@ttaylorr.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
5dfaf49a5a
commit
2bd4427824
1
Makefile
1
Makefile
@ -738,6 +738,7 @@ TEST_BUILTINS_OBJS += test-oid-array.o
|
|||||||
TEST_BUILTINS_OBJS += test-oidmap.o
|
TEST_BUILTINS_OBJS += test-oidmap.o
|
||||||
TEST_BUILTINS_OBJS += test-oidtree.o
|
TEST_BUILTINS_OBJS += test-oidtree.o
|
||||||
TEST_BUILTINS_OBJS += test-online-cpus.o
|
TEST_BUILTINS_OBJS += test-online-cpus.o
|
||||||
|
TEST_BUILTINS_OBJS += test-pack-mtimes.o
|
||||||
TEST_BUILTINS_OBJS += test-parse-options.o
|
TEST_BUILTINS_OBJS += test-parse-options.o
|
||||||
TEST_BUILTINS_OBJS += test-parse-pathspec-file.o
|
TEST_BUILTINS_OBJS += test-parse-pathspec-file.o
|
||||||
TEST_BUILTINS_OBJS += test-partial-clone.o
|
TEST_BUILTINS_OBJS += test-partial-clone.o
|
||||||
|
56
t/helper/test-pack-mtimes.c
Normal file
56
t/helper/test-pack-mtimes.c
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
#include "git-compat-util.h"
|
||||||
|
#include "test-tool.h"
|
||||||
|
#include "strbuf.h"
|
||||||
|
#include "object-store.h"
|
||||||
|
#include "packfile.h"
|
||||||
|
#include "pack-mtimes.h"
|
||||||
|
|
||||||
|
static void dump_mtimes(struct packed_git *p)
|
||||||
|
{
|
||||||
|
uint32_t i;
|
||||||
|
if (load_pack_mtimes(p) < 0)
|
||||||
|
die("could not load pack .mtimes");
|
||||||
|
|
||||||
|
for (i = 0; i < p->num_objects; i++) {
|
||||||
|
struct object_id oid;
|
||||||
|
if (nth_packed_object_id(&oid, p, i) < 0)
|
||||||
|
die("could not load object id at position %"PRIu32, i);
|
||||||
|
|
||||||
|
printf("%s %"PRIu32"\n",
|
||||||
|
oid_to_hex(&oid), nth_packed_mtime(p, i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static const char *pack_mtimes_usage = "\n"
|
||||||
|
" test-tool pack-mtimes <pack-name.mtimes>";
|
||||||
|
|
||||||
|
int cmd__pack_mtimes(int argc, const char **argv)
|
||||||
|
{
|
||||||
|
struct strbuf buf = STRBUF_INIT;
|
||||||
|
struct packed_git *p;
|
||||||
|
|
||||||
|
setup_git_directory();
|
||||||
|
|
||||||
|
if (argc != 2)
|
||||||
|
usage(pack_mtimes_usage);
|
||||||
|
|
||||||
|
for (p = get_all_packs(the_repository); p; p = p->next) {
|
||||||
|
strbuf_addstr(&buf, basename(p->pack_name));
|
||||||
|
strbuf_strip_suffix(&buf, ".pack");
|
||||||
|
strbuf_addstr(&buf, ".mtimes");
|
||||||
|
|
||||||
|
if (!strcmp(buf.buf, argv[1]))
|
||||||
|
break;
|
||||||
|
|
||||||
|
strbuf_reset(&buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
strbuf_release(&buf);
|
||||||
|
|
||||||
|
if (!p)
|
||||||
|
die("could not find pack '%s'", argv[1]);
|
||||||
|
|
||||||
|
dump_mtimes(p);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
@ -48,6 +48,7 @@ static struct test_cmd cmds[] = {
|
|||||||
{ "oidmap", cmd__oidmap },
|
{ "oidmap", cmd__oidmap },
|
||||||
{ "oidtree", cmd__oidtree },
|
{ "oidtree", cmd__oidtree },
|
||||||
{ "online-cpus", cmd__online_cpus },
|
{ "online-cpus", cmd__online_cpus },
|
||||||
|
{ "pack-mtimes", cmd__pack_mtimes },
|
||||||
{ "parse-options", cmd__parse_options },
|
{ "parse-options", cmd__parse_options },
|
||||||
{ "parse-pathspec-file", cmd__parse_pathspec_file },
|
{ "parse-pathspec-file", cmd__parse_pathspec_file },
|
||||||
{ "partial-clone", cmd__partial_clone },
|
{ "partial-clone", cmd__partial_clone },
|
||||||
|
@ -38,6 +38,7 @@ int cmd__mktemp(int argc, const char **argv);
|
|||||||
int cmd__oidmap(int argc, const char **argv);
|
int cmd__oidmap(int argc, const char **argv);
|
||||||
int cmd__oidtree(int argc, const char **argv);
|
int cmd__oidtree(int argc, const char **argv);
|
||||||
int cmd__online_cpus(int argc, const char **argv);
|
int cmd__online_cpus(int argc, const char **argv);
|
||||||
|
int cmd__pack_mtimes(int argc, const char **argv);
|
||||||
int cmd__parse_options(int argc, const char **argv);
|
int cmd__parse_options(int argc, const char **argv);
|
||||||
int cmd__parse_pathspec_file(int argc, const char** argv);
|
int cmd__parse_pathspec_file(int argc, const char** argv);
|
||||||
int cmd__partial_clone(int argc, const char **argv);
|
int cmd__partial_clone(int argc, const char **argv);
|
||||||
|
Loading…
Reference in New Issue
Block a user