git-log --first-parent: show only the first parent log
If your development history does not have fast-forward merges, i.e. the "first parent" of commits in your history are special than other parents, this option gives a better overview of the evolution of a particular branch. Signed-off-by: Junio C Hamano <junkio@cox.net>maint
parent
803527f1d9
commit
0053e902b4
14
revision.c
14
revision.c
|
@ -350,6 +350,7 @@ static void add_parents_to_list(struct rev_info *revs, struct commit *commit, st
|
||||||
{
|
{
|
||||||
struct commit_list *parent = commit->parents;
|
struct commit_list *parent = commit->parents;
|
||||||
unsigned left_flag;
|
unsigned left_flag;
|
||||||
|
int add, rest;
|
||||||
|
|
||||||
if (commit->object.flags & ADDED)
|
if (commit->object.flags & ADDED)
|
||||||
return;
|
return;
|
||||||
|
@ -395,18 +396,19 @@ static void add_parents_to_list(struct rev_info *revs, struct commit *commit, st
|
||||||
return;
|
return;
|
||||||
|
|
||||||
left_flag = (commit->object.flags & SYMMETRIC_LEFT);
|
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;
|
struct commit *p = parent->item;
|
||||||
|
|
||||||
parent = parent->next;
|
parent = parent->next;
|
||||||
|
|
||||||
parse_commit(p);
|
parse_commit(p);
|
||||||
p->object.flags |= left_flag;
|
p->object.flags |= left_flag;
|
||||||
if (p->object.flags & SEEN)
|
if (p->object.flags & SEEN)
|
||||||
continue;
|
continue;
|
||||||
p->object.flags |= SEEN;
|
p->object.flags |= SEEN;
|
||||||
insert_by_date(p, list);
|
if (add)
|
||||||
|
insert_by_date(p, list);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -836,6 +838,10 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch
|
||||||
handle_all(revs, flags);
|
handle_all(revs, flags);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (!strcmp(arg, "--first-parent")) {
|
||||||
|
revs->first_parent_only = 1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (!strcmp(arg, "--reflog")) {
|
if (!strcmp(arg, "--reflog")) {
|
||||||
handle_reflog(revs, flags);
|
handle_reflog(revs, flags);
|
||||||
continue;
|
continue;
|
||||||
|
|
|
@ -46,7 +46,8 @@ struct rev_info {
|
||||||
boundary:2,
|
boundary:2,
|
||||||
left_right:1,
|
left_right:1,
|
||||||
parents:1,
|
parents:1,
|
||||||
reverse:1;
|
reverse:1,
|
||||||
|
first_parent_only:1;
|
||||||
|
|
||||||
/* Diff flags */
|
/* Diff flags */
|
||||||
unsigned int diff:1,
|
unsigned int diff:1,
|
||||||
|
|
Loading…
Reference in New Issue