path: root/revision.c
diff options
authorAdam Simpkins <>2009-08-19 02:34:33 (GMT)
committerJunio C Hamano <>2009-08-21 19:41:25 (GMT)
commitbeb5af43a6114b551f14bc13f1beecfe8de930d9 (patch)
tree4b86d035b89aec399e129669a5e162b478adf322 /revision.c
parent83e355a62cd05fba4533d59f9ab4e104c0596279 (diff)
graph API: fix bug in graph_is_interesting()
Previously, graph_is_interesting() did not behave quite the same way as the code in get_revision(). As a result, it would sometimes think commits were uninteresting, even though get_revision() would return them. This resulted in incorrect lines in the graph output. This change creates a get_commit_action() function, which graph_is_interesting() and simplify_commit() both now use to determine if a commit will be shown. It is identical to the old simplify_commit() behavior, except that it never calls rewrite_parents(). This problem was reported by Santi BĂ©jar. The following command would exhibit the problem before, but now works correctly: git log --graph --simplify-by-decoration --oneline v1.6.3.3 Previously git graph did not display the output for this command correctly between f29ac4f and 66996ec, among other places. Signed-off-by: Adam Simpkins <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'revision.c')
1 files changed, 14 insertions, 3 deletions
diff --git a/revision.c b/revision.c
index 9f5dac5..efa3b7c 100644
--- a/revision.c
+++ b/revision.c
@@ -1664,7 +1664,7 @@ static inline int want_ancestry(struct rev_info *revs)
return (revs->rewrite_parents || revs->;
-enum commit_action simplify_commit(struct rev_info *revs, struct commit *commit)
+enum commit_action get_commit_action(struct rev_info *revs, struct commit *commit)
if (commit->object.flags & SHOWN)
return commit_ignore;
@@ -1692,12 +1692,23 @@ enum commit_action simplify_commit(struct rev_info *revs, struct commit *commit)
if (!commit->parents || !commit->parents->next)
return commit_ignore;
- if (want_ancestry(revs) && rewrite_parents(revs, commit) < 0)
- return commit_error;
return commit_show;
+enum commit_action simplify_commit(struct rev_info *revs, struct commit *commit)
+ enum commit_action action = get_commit_action(revs, commit);
+ if (action == commit_show &&
+ !revs->show_all &&
+ revs->prune && revs->dense && want_ancestry(revs)) {
+ if (rewrite_parents(revs, commit) < 0)
+ return commit_error;
+ }
+ return action;
static struct commit *get_revision_1(struct rev_info *revs)
if (!revs->commits)