Browse Source

commit-graph: clean up chains after flattened write

If we write a commit-graph file without the split option, then
we write to $OBJDIR/info/commit-graph and start to ignore
the chains in $OBJDIR/info/commit-graphs/.

Unlink the commit-graph-chain file and expire the graph-{hash}.graph
files in $OBJDIR/info/commit-graphs/ during every write.

Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Derrick Stolee 6 years ago committed by Junio C Hamano
parent
commit
ba41112a63
  1. 12
      commit-graph.c
  2. 12
      t/t5324-split-commit-graph.sh

12
commit-graph.c

@ -1687,6 +1687,12 @@ static void expire_commit_graphs(struct write_commit_graph_context *ctx) @@ -1687,6 +1687,12 @@ static void expire_commit_graphs(struct write_commit_graph_context *ctx)

if (ctx->split_opts && ctx->split_opts->expire_time)
expire_time -= ctx->split_opts->expire_time;
if (!ctx->split) {
char *chain_file_name = get_chain_filename(ctx->obj_dir);
unlink(chain_file_name);
free(chain_file_name);
ctx->num_commit_graphs_after = 0;
}

strbuf_addstr(&path, ctx->obj_dir);
strbuf_addstr(&path, "/info/commit-graphs");
@ -1841,10 +1847,10 @@ int write_commit_graph(const char *obj_dir, @@ -1841,10 +1847,10 @@ int write_commit_graph(const char *obj_dir,

res = write_commit_graph_file(ctx);

if (ctx->split) {
if (ctx->split)
mark_commit_graphs(ctx);
expire_commit_graphs(ctx);
}

expire_commit_graphs(ctx);

cleanup:
free(ctx->graph_name);

12
t/t5324-split-commit-graph.sh

@ -216,6 +216,18 @@ test_expect_success 'test merge stragety constants' ' @@ -216,6 +216,18 @@ test_expect_success 'test merge stragety constants' '
)
'

test_expect_success 'remove commit-graph-chain file after flattening' '
git clone . flatten &&
(
cd flatten &&
test_line_count = 2 $graphdir/commit-graph-chain &&
git commit-graph write --reachable &&
test_path_is_missing $graphdir/commit-graph-chain &&
ls $graphdir >graph-files &&
test_line_count = 0 graph-files
)
'

corrupt_file() {
file=$1
pos=$2

Loading…
Cancel
Save