diff options
author | Derrick Stolee <dstolee@microsoft.com> | 2018-06-27 16:24:45 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2018-06-27 20:29:10 +0300 |
commit | 59fb87701ff68eb114e54ce6834e91c4ae8f60a7 (patch) | |
tree | 2046a528befaed1a8896b7ca9e284321ec68b1eb /commit-graph.c | |
parent | d88b14b3fd691fc71c3cea5bc5bde9dd10b5e86c (diff) |
commit-graph: add '--reachable' option
When writing commit-graph files, it can be convenient to ask for all
reachable commits (starting at the ref set) in the resulting file. This
is particularly helpful when writing to stdin is complicated, such as a
future integration with 'git gc'.
Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'commit-graph.c')
-rw-r--r-- | commit-graph.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/commit-graph.c b/commit-graph.c index 5b7fa707a5..212232e752 100644 --- a/commit-graph.c +++ b/commit-graph.c @@ -7,6 +7,7 @@ #include "packfile.h" #include "commit.h" #include "object.h" +#include "refs.h" #include "revision.h" #include "sha1-lookup.h" #include "commit-graph.h" @@ -656,6 +657,25 @@ static void compute_generation_numbers(struct packed_commit_list* commits) } } +static int add_ref_to_list(const char *refname, + const struct object_id *oid, + int flags, void *cb_data) +{ + struct string_list *list = (struct string_list *)cb_data; + + string_list_append(list, oid_to_hex(oid)); + return 0; +} + +void write_commit_graph_reachable(const char *obj_dir, int append) +{ + struct string_list list; + + string_list_init(&list, 1); + for_each_ref(add_ref_to_list, &list); + write_commit_graph(obj_dir, NULL, &list, append); +} + void write_commit_graph(const char *obj_dir, struct string_list *pack_indexes, struct string_list *commit_hex, |