Merge branch 'jc/fpl'
authorJunio C Hamano <junkio@cox.net>
Mon, 26 Mar 2007 00:47:07 +0000 (17:47 -0700)
committerJunio C Hamano <junkio@cox.net>
Mon, 26 Mar 2007 00:47:07 +0000 (17:47 -0700)
* jc/fpl:
git-log --first-parent: show only the first parent log

revision.c
revision.h
index adc381c268b6f336ab7820c464fafa39629c8e28..f23c1d52269576917ac2d8347b322805daa1bac5 100644 (file)
@@ -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;
index 6ae39e6bec180769df0bccccdf652ad0ffd784f0..55e6b531ce3e5838f988ca1896484333e795f192 100644 (file)
@@ -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,