Merge branch 'ds/test-read-graph'
Dev support for commit-graph feature. * ds/test-read-graph: test-tool: use 'read-graph' helper
This commit is contained in:
		@ -9,7 +9,6 @@ git-commit-graph - Write and verify Git commit-graph files
 | 
				
			|||||||
SYNOPSIS
 | 
					SYNOPSIS
 | 
				
			||||||
--------
 | 
					--------
 | 
				
			||||||
[verse]
 | 
					[verse]
 | 
				
			||||||
'git commit-graph read' [--object-dir <dir>]
 | 
					 | 
				
			||||||
'git commit-graph verify' [--object-dir <dir>] [--shallow] [--[no-]progress]
 | 
					'git commit-graph verify' [--object-dir <dir>] [--shallow] [--[no-]progress]
 | 
				
			||||||
'git commit-graph write' <options> [--object-dir <dir>] [--[no-]progress]
 | 
					'git commit-graph write' <options> [--object-dir <dir>] [--[no-]progress]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -74,11 +73,6 @@ Finally, if `--expire-time=<datetime>` is not specified, let `datetime`
 | 
				
			|||||||
be the current time. After writing the split commit-graph, delete all
 | 
					be the current time. After writing the split commit-graph, delete all
 | 
				
			||||||
unused commit-graph whose modified times are older than `datetime`.
 | 
					unused commit-graph whose modified times are older than `datetime`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
'read'::
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Read the commit-graph file and output basic details about it.
 | 
					 | 
				
			||||||
Used for debugging purposes.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
'verify'::
 | 
					'verify'::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Read the commit-graph file and verify its contents against the object
 | 
					Read the commit-graph file and verify its contents against the object
 | 
				
			||||||
@ -118,12 +112,6 @@ $ git show-ref -s | git commit-graph write --stdin-commits
 | 
				
			|||||||
$ git rev-parse HEAD | git commit-graph write --stdin-commits --append
 | 
					$ git rev-parse HEAD | git commit-graph write --stdin-commits --append
 | 
				
			||||||
------------------------------------------------
 | 
					------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* Read basic information from the commit-graph file.
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
------------------------------------------------
 | 
					 | 
				
			||||||
$ git commit-graph read
 | 
					 | 
				
			||||||
------------------------------------------------
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
GIT
 | 
					GIT
 | 
				
			||||||
---
 | 
					---
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										1
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								Makefile
									
									
									
									
									
								
							@ -727,6 +727,7 @@ TEST_BUILTINS_OBJS += test-prio-queue.o
 | 
				
			|||||||
TEST_BUILTINS_OBJS += test-progress.o
 | 
					TEST_BUILTINS_OBJS += test-progress.o
 | 
				
			||||||
TEST_BUILTINS_OBJS += test-reach.o
 | 
					TEST_BUILTINS_OBJS += test-reach.o
 | 
				
			||||||
TEST_BUILTINS_OBJS += test-read-cache.o
 | 
					TEST_BUILTINS_OBJS += test-read-cache.o
 | 
				
			||||||
 | 
					TEST_BUILTINS_OBJS += test-read-graph.o
 | 
				
			||||||
TEST_BUILTINS_OBJS += test-read-midx.o
 | 
					TEST_BUILTINS_OBJS += test-read-midx.o
 | 
				
			||||||
TEST_BUILTINS_OBJS += test-ref-store.o
 | 
					TEST_BUILTINS_OBJS += test-ref-store.o
 | 
				
			||||||
TEST_BUILTINS_OBJS += test-regex.o
 | 
					TEST_BUILTINS_OBJS += test-regex.o
 | 
				
			||||||
 | 
				
			|||||||
@ -8,7 +8,6 @@
 | 
				
			|||||||
#include "object-store.h"
 | 
					#include "object-store.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static char const * const builtin_commit_graph_usage[] = {
 | 
					static char const * const builtin_commit_graph_usage[] = {
 | 
				
			||||||
	N_("git commit-graph read [--object-dir <objdir>]"),
 | 
					 | 
				
			||||||
	N_("git commit-graph verify [--object-dir <objdir>] [--shallow] [--[no-]progress]"),
 | 
						N_("git commit-graph verify [--object-dir <objdir>] [--shallow] [--[no-]progress]"),
 | 
				
			||||||
	N_("git commit-graph write [--object-dir <objdir>] [--append|--split] [--reachable|--stdin-packs|--stdin-commits] [--[no-]progress] <split options>"),
 | 
						N_("git commit-graph write [--object-dir <objdir>] [--append|--split] [--reachable|--stdin-packs|--stdin-commits] [--[no-]progress] <split options>"),
 | 
				
			||||||
	NULL
 | 
						NULL
 | 
				
			||||||
@ -19,11 +18,6 @@ static const char * const builtin_commit_graph_verify_usage[] = {
 | 
				
			|||||||
	NULL
 | 
						NULL
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static const char * const builtin_commit_graph_read_usage[] = {
 | 
					 | 
				
			||||||
	N_("git commit-graph read [--object-dir <objdir>]"),
 | 
					 | 
				
			||||||
	NULL
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static const char * const builtin_commit_graph_write_usage[] = {
 | 
					static const char * const builtin_commit_graph_write_usage[] = {
 | 
				
			||||||
	N_("git commit-graph write [--object-dir <objdir>] [--append|--split] [--reachable|--stdin-packs|--stdin-commits] [--[no-]progress] <split options>"),
 | 
						N_("git commit-graph write [--object-dir <objdir>] [--append|--split] [--reachable|--stdin-packs|--stdin-commits] [--[no-]progress] <split options>"),
 | 
				
			||||||
	NULL
 | 
						NULL
 | 
				
			||||||
@ -93,66 +87,6 @@ static int graph_verify(int argc, const char **argv)
 | 
				
			|||||||
	return verify_commit_graph(the_repository, graph, flags);
 | 
						return verify_commit_graph(the_repository, graph, flags);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int graph_read(int argc, const char **argv)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	struct commit_graph *graph = NULL;
 | 
					 | 
				
			||||||
	char *graph_name;
 | 
					 | 
				
			||||||
	int open_ok;
 | 
					 | 
				
			||||||
	int fd;
 | 
					 | 
				
			||||||
	struct stat st;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	static struct option builtin_commit_graph_read_options[] = {
 | 
					 | 
				
			||||||
		OPT_STRING(0, "object-dir", &opts.obj_dir,
 | 
					 | 
				
			||||||
			N_("dir"),
 | 
					 | 
				
			||||||
			N_("The object directory to store the graph")),
 | 
					 | 
				
			||||||
		OPT_END(),
 | 
					 | 
				
			||||||
	};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	trace2_cmd_mode("read");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	argc = parse_options(argc, argv, NULL,
 | 
					 | 
				
			||||||
			     builtin_commit_graph_read_options,
 | 
					 | 
				
			||||||
			     builtin_commit_graph_read_usage, 0);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (!opts.obj_dir)
 | 
					 | 
				
			||||||
		opts.obj_dir = get_object_directory();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	graph_name = get_commit_graph_filename(opts.obj_dir);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	open_ok = open_commit_graph(graph_name, &fd, &st);
 | 
					 | 
				
			||||||
	if (!open_ok)
 | 
					 | 
				
			||||||
		die_errno(_("Could not open commit-graph '%s'"), graph_name);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	graph = load_commit_graph_one_fd_st(fd, &st);
 | 
					 | 
				
			||||||
	if (!graph)
 | 
					 | 
				
			||||||
		return 1;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	FREE_AND_NULL(graph_name);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	printf("header: %08x %d %d %d %d\n",
 | 
					 | 
				
			||||||
		ntohl(*(uint32_t*)graph->data),
 | 
					 | 
				
			||||||
		*(unsigned char*)(graph->data + 4),
 | 
					 | 
				
			||||||
		*(unsigned char*)(graph->data + 5),
 | 
					 | 
				
			||||||
		*(unsigned char*)(graph->data + 6),
 | 
					 | 
				
			||||||
		*(unsigned char*)(graph->data + 7));
 | 
					 | 
				
			||||||
	printf("num_commits: %u\n", graph->num_commits);
 | 
					 | 
				
			||||||
	printf("chunks:");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (graph->chunk_oid_fanout)
 | 
					 | 
				
			||||||
		printf(" oid_fanout");
 | 
					 | 
				
			||||||
	if (graph->chunk_oid_lookup)
 | 
					 | 
				
			||||||
		printf(" oid_lookup");
 | 
					 | 
				
			||||||
	if (graph->chunk_commit_data)
 | 
					 | 
				
			||||||
		printf(" commit_metadata");
 | 
					 | 
				
			||||||
	if (graph->chunk_extra_edges)
 | 
					 | 
				
			||||||
		printf(" extra_edges");
 | 
					 | 
				
			||||||
	printf("\n");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	UNLEAK(graph);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return 0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
extern int read_replace_refs;
 | 
					extern int read_replace_refs;
 | 
				
			||||||
static struct split_commit_graph_opts split_opts;
 | 
					static struct split_commit_graph_opts split_opts;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -268,8 +202,6 @@ int cmd_commit_graph(int argc, const char **argv, const char *prefix)
 | 
				
			|||||||
	save_commit_buffer = 0;
 | 
						save_commit_buffer = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (argc > 0) {
 | 
						if (argc > 0) {
 | 
				
			||||||
		if (!strcmp(argv[0], "read"))
 | 
					 | 
				
			||||||
			return graph_read(argc, argv);
 | 
					 | 
				
			||||||
		if (!strcmp(argv[0], "verify"))
 | 
							if (!strcmp(argv[0], "verify"))
 | 
				
			||||||
			return graph_verify(argc, argv);
 | 
								return graph_verify(argc, argv);
 | 
				
			||||||
		if (!strcmp(argv[0], "write"))
 | 
							if (!strcmp(argv[0], "write"))
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										53
									
								
								t/helper/test-read-graph.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								t/helper/test-read-graph.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,53 @@
 | 
				
			|||||||
 | 
					#include "test-tool.h"
 | 
				
			||||||
 | 
					#include "cache.h"
 | 
				
			||||||
 | 
					#include "commit-graph.h"
 | 
				
			||||||
 | 
					#include "repository.h"
 | 
				
			||||||
 | 
					#include "object-store.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int cmd__read_graph(int argc, const char **argv)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						struct commit_graph *graph = NULL;
 | 
				
			||||||
 | 
						char *graph_name;
 | 
				
			||||||
 | 
						int open_ok;
 | 
				
			||||||
 | 
						int fd;
 | 
				
			||||||
 | 
						struct stat st;
 | 
				
			||||||
 | 
						const char *object_dir;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						setup_git_directory();
 | 
				
			||||||
 | 
						object_dir = get_object_directory();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						graph_name = get_commit_graph_filename(object_dir);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						open_ok = open_commit_graph(graph_name, &fd, &st);
 | 
				
			||||||
 | 
						if (!open_ok)
 | 
				
			||||||
 | 
							die_errno(_("Could not open commit-graph '%s'"), graph_name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						graph = load_commit_graph_one_fd_st(fd, &st);
 | 
				
			||||||
 | 
						if (!graph)
 | 
				
			||||||
 | 
							return 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						FREE_AND_NULL(graph_name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						printf("header: %08x %d %d %d %d\n",
 | 
				
			||||||
 | 
							ntohl(*(uint32_t*)graph->data),
 | 
				
			||||||
 | 
							*(unsigned char*)(graph->data + 4),
 | 
				
			||||||
 | 
							*(unsigned char*)(graph->data + 5),
 | 
				
			||||||
 | 
							*(unsigned char*)(graph->data + 6),
 | 
				
			||||||
 | 
							*(unsigned char*)(graph->data + 7));
 | 
				
			||||||
 | 
						printf("num_commits: %u\n", graph->num_commits);
 | 
				
			||||||
 | 
						printf("chunks:");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (graph->chunk_oid_fanout)
 | 
				
			||||||
 | 
							printf(" oid_fanout");
 | 
				
			||||||
 | 
						if (graph->chunk_oid_lookup)
 | 
				
			||||||
 | 
							printf(" oid_lookup");
 | 
				
			||||||
 | 
						if (graph->chunk_commit_data)
 | 
				
			||||||
 | 
							printf(" commit_metadata");
 | 
				
			||||||
 | 
						if (graph->chunk_extra_edges)
 | 
				
			||||||
 | 
							printf(" extra_edges");
 | 
				
			||||||
 | 
						printf("\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						UNLEAK(graph);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -45,6 +45,7 @@ static struct test_cmd cmds[] = {
 | 
				
			|||||||
	{ "progress", cmd__progress },
 | 
						{ "progress", cmd__progress },
 | 
				
			||||||
	{ "reach", cmd__reach },
 | 
						{ "reach", cmd__reach },
 | 
				
			||||||
	{ "read-cache", cmd__read_cache },
 | 
						{ "read-cache", cmd__read_cache },
 | 
				
			||||||
 | 
						{ "read-graph", cmd__read_graph },
 | 
				
			||||||
	{ "read-midx", cmd__read_midx },
 | 
						{ "read-midx", cmd__read_midx },
 | 
				
			||||||
	{ "ref-store", cmd__ref_store },
 | 
						{ "ref-store", cmd__ref_store },
 | 
				
			||||||
	{ "regex", cmd__regex },
 | 
						{ "regex", cmd__regex },
 | 
				
			||||||
 | 
				
			|||||||
@ -35,6 +35,7 @@ int cmd__prio_queue(int argc, const char **argv);
 | 
				
			|||||||
int cmd__progress(int argc, const char **argv);
 | 
					int cmd__progress(int argc, const char **argv);
 | 
				
			||||||
int cmd__reach(int argc, const char **argv);
 | 
					int cmd__reach(int argc, const char **argv);
 | 
				
			||||||
int cmd__read_cache(int argc, const char **argv);
 | 
					int cmd__read_cache(int argc, const char **argv);
 | 
				
			||||||
 | 
					int cmd__read_graph(int argc, const char **argv);
 | 
				
			||||||
int cmd__read_midx(int argc, const char **argv);
 | 
					int cmd__read_midx(int argc, const char **argv);
 | 
				
			||||||
int cmd__ref_store(int argc, const char **argv);
 | 
					int cmd__ref_store(int argc, const char **argv);
 | 
				
			||||||
int cmd__regex(int argc, const char **argv);
 | 
					int cmd__regex(int argc, const char **argv);
 | 
				
			||||||
 | 
				
			|||||||
@ -85,7 +85,7 @@ graph_read_expect() {
 | 
				
			|||||||
	num_commits: $1
 | 
						num_commits: $1
 | 
				
			||||||
	chunks: oid_fanout oid_lookup commit_metadata$OPTIONAL
 | 
						chunks: oid_fanout oid_lookup commit_metadata$OPTIONAL
 | 
				
			||||||
	EOF
 | 
						EOF
 | 
				
			||||||
	git commit-graph read >output &&
 | 
						test-tool read-graph >output &&
 | 
				
			||||||
	test_cmp expect output
 | 
						test_cmp expect output
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -25,7 +25,7 @@ graph_read_expect() {
 | 
				
			|||||||
	num_commits: $1
 | 
						num_commits: $1
 | 
				
			||||||
	chunks: oid_fanout oid_lookup commit_metadata
 | 
						chunks: oid_fanout oid_lookup commit_metadata
 | 
				
			||||||
	EOF
 | 
						EOF
 | 
				
			||||||
	git commit-graph read >output &&
 | 
						test-tool read-graph >output &&
 | 
				
			||||||
	test_cmp expect output
 | 
						test_cmp expect output
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user