diff options
author | Junio C Hamano <gitster@pobox.com> | 2012-01-29 13:18:54 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2012-01-29 13:18:54 -0800 |
commit | 731218c18f493cc6c6e3fc22be837e49e5399768 (patch) | |
tree | 87e9210c371e9ac917c83e3e2387dab4e4ac9190 /revision.c | |
parent | a734e7ef6c14d8eb476fe8b2d6f861b3ed2c211d (diff) | |
parent | 36ed1913e1d5de0930e59db6eeec3ccb2bd58bd9 (diff) | |
download | git-731218c18f493cc6c6e3fc22be837e49e5399768.tar.gz |
Merge branch 'jc/maint-log-first-parent-pathspec'
* jc/maint-log-first-parent-pathspec:
Making pathspec limited log play nicer with --first-parent
Diffstat (limited to 'revision.c')
-rw-r--r-- | revision.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/revision.c b/revision.c index 064e351084..eb0be4206d 100644 --- a/revision.c +++ b/revision.c @@ -416,7 +416,7 @@ static int rev_same_tree_as_empty(struct rev_info *revs, struct commit *commit) static void try_to_simplify_commit(struct rev_info *revs, struct commit *commit) { struct commit_list **pp, *parent; - int tree_changed = 0, tree_same = 0; + int tree_changed = 0, tree_same = 0, nth_parent = 0; /* * If we don't do pruning, everything is interesting @@ -444,6 +444,14 @@ static void try_to_simplify_commit(struct rev_info *revs, struct commit *commit) while ((parent = *pp) != NULL) { struct commit *p = parent->item; + /* + * Do not compare with later parents when we care only about + * the first parent chain, in order to avoid derailing the + * traversal to follow a side branch that brought everything + * in the path we are limited to by the pathspec. + */ + if (revs->first_parent_only && nth_parent++) + break; if (parse_commit(p) < 0) die("cannot simplify commit %s (because of %s)", sha1_to_hex(commit->object.sha1), |