[PATCH 4/4] git log: Updated --graph to work even when the commit list is pruned
Signed-off-by: Adam Simpkins <adam@adamsimpkins.net>
---
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