path: root/commit-graph.h
diff options
authorDerrick Stolee <>2019-06-18 18:14:30 (GMT)
committerJunio C Hamano <>2019-06-20 03:46:26 (GMT)
commitc523035cbd8515d095dc15e9661fd896733bedbc (patch)
tree8975475cc2db27ad56a35ecae5fbe974b040f607 /commit-graph.h
parent1771be90c8e4797c2466296d1d570dbfa39d9743 (diff)
commit-graph: allow cross-alternate chains
In an environment like a fork network, it is helpful to have a commit-graph chain that spans both the base repo and the fork repo. The fork is usually a small set of data on top of the large repo, but sometimes the fork is much larger. For example, git-for-windows/git has almost double the number of commits as git/git because it rebases its commits on every major version update. To allow cross-alternate commit-graph chains, we need a few pieces: 1. When looking for a graph-{hash}.graph file, check all alternates. 2. When merging commit-graph chains, do not merge across alternates. 3. When writing a new commit-graph chain based on a commit-graph file in another object directory, do not allow success if the base file has of the name "commit-graph" instead of "commit-graphs/graph-{hash}.graph". Signed-off-by: Derrick Stolee <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'commit-graph.h')
1 files changed, 1 insertions, 0 deletions
diff --git a/commit-graph.h b/commit-graph.h
index c321834..802d352 100644
--- a/commit-graph.h
+++ b/commit-graph.h
@@ -48,6 +48,7 @@ struct commit_graph {
uint32_t num_commits;
struct object_id oid;
char *filename;
+ const char *obj_dir;
uint32_t num_commits_in_base;
struct commit_graph *base_graph;