> +static int run_write_commit_graph(struct repository *r) > +{ > + int result; > + struct argv_array cmd = ARGV_ARRAY_INIT; > + > + argv_array_pushl(&cmd, "-C", r->worktree, > + "commit-graph", "write", > + "--split", "--reachable", > + NULL); As mentioned in my reply to an earlier patch (sent a few minutes ago), this won't work if there are environment variables like GIT_DIR present. Besides that, the overall design looks reasonable.