[PATCH 4/4] git log: Updated --graph to work even when the commit list is pruned
From: Adam Simpkins <hidden>
Date: 2016-06-15 22:44:27
Subsystem:
the rest · Maintainer:
Linus Torvalds
Signed-off-by: Adam Simpkins <redacted> --- graph.c | 22 +++++++++++++++------- revision.c | 3 --- 2 files changed, 15 insertions(+), 10 deletions(-)
diff --git a/graph.c b/graph.c
index e6d1d3a..be4000f 100644
--- a/graph.c
+++ b/graph.c@@ -1,6 +1,8 @@ #include "cache.h" #include "commit.h" #include "graph.h" +#include "diff.h" +#include "revision.h" /* * TODO:
@@ -174,17 +176,24 @@ static void graph_ensure_capacity(struct git_graph *graph, int num_columns) static void graph_insert_into_new_columns(struct git_graph *graph, struct commit *commit, - int mapping_index) + int *mapping_index) { int i; /* + * Ignore uinteresting and pruned commits + */ + if (commit->object.flags & (UNINTERESTING | TREESAME)) + return; + + /* * If the commit is already in the new_columns list, we don't need to * add it. Just update the mapping correctly. */ for (i = 0; i < graph->num_new_columns; ++i) { if (graph->new_columns[i].commit == commit) { - graph->mapping[mapping_index] = i; + graph->mapping[*mapping_index] = i; + *mapping_index += 2; return; } }
@@ -193,7 +202,8 @@ static void graph_insert_into_new_columns(struct git_graph *graph, * This commit isn't already in new_columns. Add it. */ graph->new_columns[graph->num_new_columns].commit = commit; - graph->mapping[mapping_index] = graph->num_new_columns; + graph->mapping[*mapping_index] = graph->num_new_columns; + *mapping_index += 2; ++graph->num_new_columns; }
@@ -266,13 +276,11 @@ static void graph_update_columns(struct git_graph *graph) parent = parent->next) { graph_insert_into_new_columns(graph, parent->item, - mapping_idx); - mapping_idx += 2; + &mapping_idx); } } else { graph_insert_into_new_columns(graph, col_commit, - mapping_idx); - mapping_idx += 2; + &mapping_idx); } }
diff --git a/revision.c b/revision.c
index 6c9622c..6a1f513 100644
--- a/revision.c
+++ b/revision.c@@ -1410,9 +1410,6 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch if (revs->reflog_info && revs->graph) die("cannot combine --walk-reflogs with --graph"); - if (revs->graph && revs->prune_data) - die("cannot use --graph when pruning commit list"); - return left; }
--
1.5.3.6