diff options
author | Junio C Hamano <junkio@cox.net> | 2007-03-25 17:47:07 -0700 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2007-03-25 17:47:07 -0700 |
commit | 3a81b9f571a6b7edd83b3d5f27c3c95d9b1c9d5c (patch) | |
tree | 77598ab3f870d3d22d68c11e4d453ad3aa91a0ee | |
parent | Update README to point at a few key periodical messages to the list (diff) | |
parent | git-log --first-parent: show only the first parent log (diff) | |
download | tgif-3a81b9f571a6b7edd83b3d5f27c3c95d9b1c9d5c.tar.xz |
Merge branch 'jc/fpl'
* jc/fpl:
git-log --first-parent: show only the first parent log
-rw-r--r-- | revision.c | 14 | ||||
-rw-r--r-- | revision.h | 3 |
2 files changed, 12 insertions, 5 deletions
diff --git a/revision.c b/revision.c index adc381c268..f23c1d5226 100644 --- a/revision.c +++ b/revision.c @@ -360,6 +360,7 @@ static void add_parents_to_list(struct rev_info *revs, struct commit *commit, st { struct commit_list *parent = commit->parents; unsigned left_flag; + int add, rest; if (commit->object.flags & ADDED) return; @@ -405,18 +406,19 @@ static void add_parents_to_list(struct rev_info *revs, struct commit *commit, st return; left_flag = (commit->object.flags & SYMMETRIC_LEFT); - parent = commit->parents; - while (parent) { + + rest = !revs->first_parent_only; + for (parent = commit->parents, add = 1; parent; add = rest) { struct commit *p = parent->item; parent = parent->next; - parse_commit(p); p->object.flags |= left_flag; if (p->object.flags & SEEN) continue; p->object.flags |= SEEN; - insert_by_date(p, list); + if (add) + insert_by_date(p, list); } } @@ -847,6 +849,10 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch handle_all(revs, flags); continue; } + if (!strcmp(arg, "--first-parent")) { + revs->first_parent_only = 1; + continue; + } if (!strcmp(arg, "--reflog")) { handle_reflog(revs, flags); continue; diff --git a/revision.h b/revision.h index 6ae39e6bec..55e6b531ce 100644 --- a/revision.h +++ b/revision.h @@ -46,7 +46,8 @@ struct rev_info { boundary:2, left_right:1, parents:1, - reverse:1; + reverse:1, + first_parent_only:1; /* Diff flags */ unsigned int diff:1, |