Teach Git the 'graph' builtin that will be used for writing and reading packed graph files. The current implementation is mostly empty, except for a check that the core.graph setting is enabled and a '--pack-dir' option. Signed-off-by: Derrick Stolee <dstolee@xxxxxxxxxxxxx> --- Documentation/git-graph.txt | 7 +++++++ Makefile | 1 + builtin.h | 1 + builtin/graph.c | 36 ++++++++++++++++++++++++++++++++++++ command-list.txt | 1 + git.c | 1 + 6 files changed, 47 insertions(+) create mode 100644 Documentation/git-graph.txt create mode 100644 builtin/graph.c diff --git a/Documentation/git-graph.txt b/Documentation/git-graph.txt new file mode 100644 index 0000000000..de5a3c07e6 --- /dev/null +++ b/Documentation/git-graph.txt @@ -0,0 +1,7 @@ +git-graph(1) +============ + +NAME +---- +git-graph - Write and verify Git commit graphs (.graph files) + diff --git a/Makefile b/Makefile index 1a9b23b679..d8b0d0457a 100644 --- a/Makefile +++ b/Makefile @@ -965,6 +965,7 @@ BUILTIN_OBJS += builtin/for-each-ref.o BUILTIN_OBJS += builtin/fsck.o BUILTIN_OBJS += builtin/gc.o BUILTIN_OBJS += builtin/get-tar-commit-id.o +BUILTIN_OBJS += builtin/graph.o BUILTIN_OBJS += builtin/grep.o BUILTIN_OBJS += builtin/hash-object.o BUILTIN_OBJS += builtin/help.o diff --git a/builtin.h b/builtin.h index 42378f3aa4..ae7e816908 100644 --- a/builtin.h +++ b/builtin.h @@ -168,6 +168,7 @@ extern int cmd_format_patch(int argc, const char **argv, const char *prefix); extern int cmd_fsck(int argc, const char **argv, const char *prefix); extern int cmd_gc(int argc, const char **argv, const char *prefix); extern int cmd_get_tar_commit_id(int argc, const char **argv, const char *prefix); +extern int cmd_graph(int argc, const char **argv, const char *prefix); extern int cmd_grep(int argc, const char **argv, const char *prefix); extern int cmd_hash_object(int argc, const char **argv, const char *prefix); extern int cmd_help(int argc, const char **argv, const char *prefix); diff --git a/builtin/graph.c b/builtin/graph.c new file mode 100644 index 0000000000..a902dc8646 --- /dev/null +++ b/builtin/graph.c @@ -0,0 +1,36 @@ +#include "builtin.h" +#include "cache.h" +#include "config.h" +#include "dir.h" +#include "git-compat-util.h" +#include "lockfile.h" +#include "packfile.h" +#include "parse-options.h" + +static char const * const builtin_graph_usage[] ={ + N_("git graph [--pack-dir <packdir>]"), + NULL +}; + +static struct opts_graph { + const char *pack_dir; +} opts; + +int cmd_graph(int argc, const char **argv, const char *prefix) +{ + static struct option builtin_graph_options[] = { + { OPTION_STRING, 'p', "pack-dir", &opts.pack_dir, + N_("dir"), + N_("The pack directory to store the graph") }, + OPT_END(), + }; + + if (!core_graph) + die("core.graph is false"); + + if (argc == 2 && !strcmp(argv[1], "-h")) + usage_with_options(builtin_graph_usage, builtin_graph_options); + + return 0; +} + diff --git a/command-list.txt b/command-list.txt index a1fad28fd8..d9c17cb9f8 100644 --- a/command-list.txt +++ b/command-list.txt @@ -61,6 +61,7 @@ git-format-patch mainporcelain git-fsck ancillaryinterrogators git-gc mainporcelain git-get-tar-commit-id ancillaryinterrogators +git-graph plumbingmanipulators git-grep mainporcelain info git-gui mainporcelain git-hash-object plumbingmanipulators diff --git a/git.c b/git.c index c870b9719c..29f8b6e7dd 100644 --- a/git.c +++ b/git.c @@ -408,6 +408,7 @@ static struct cmd_struct commands[] = { { "fsck-objects", cmd_fsck, RUN_SETUP }, { "gc", cmd_gc, RUN_SETUP }, { "get-tar-commit-id", cmd_get_tar_commit_id }, + { "graph", cmd_graph, RUN_SETUP_GENTLY }, { "grep", cmd_grep, RUN_SETUP_GENTLY }, { "hash-object", cmd_hash_object }, { "help", cmd_help }, -- 2.16.0