From: Junio C Hamano Date: Mon, 5 Oct 2015 19:30:24 +0000 (-0700) Subject: Merge branch 'jk/blame-first-parent' X-Git-Tag: v2.7.0-rc0~132 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/ff2be2610ad12a87636141c1868b47f035488331?hp=1e7ea4e7abe6214a06d8acd60e6f6e2a09f7d05c Merge branch 'jk/blame-first-parent' "git blame --first-parent v1.0..v2.0" was not rejected but did not limit the blame to commits on the first parent chain. * jk/blame-first-parent: blame: handle --first-parent --- diff --git a/builtin/blame.c b/builtin/blame.c index 6fd1a63fc7..01ea770787 100644 --- a/builtin/blame.c +++ b/builtin/blame.c @@ -1366,8 +1366,15 @@ static void pass_whole_blame(struct scoreboard *sb, */ static struct commit_list *first_scapegoat(struct rev_info *revs, struct commit *commit) { - if (!reverse) + if (!reverse) { + if (revs->first_parent_only && + commit->parents && + commit->parents->next) { + free_commit_list(commit->parents->next); + commit->parents->next = NULL; + } return commit->parents; + } return lookup_decoration(&revs->children, &commit->object); } @@ -2679,6 +2686,8 @@ int cmd_blame(int argc, const char **argv, const char *prefix) } else if (contents_from) die("--contents and --children do not blend well."); + else if (revs.first_parent_only) + die("combining --first-parent and --reverse is not supported"); else { final_commit_name = prepare_initial(&sb); sb.commits.compare = compare_commits_by_reverse_commit_date; diff --git a/t/annotate-tests.sh b/t/annotate-tests.sh index f5c01758ca..b1673b3e8f 100644 --- a/t/annotate-tests.sh +++ b/t/annotate-tests.sh @@ -111,6 +111,10 @@ test_expect_success 'blame 2 authors + 2 merged-in authors' ' check_count A 2 B 1 B1 2 B2 1 ' +test_expect_success 'blame --first-parent blames merge for branch1' ' + check_count --first-parent A 2 B 1 "A U Thor" 2 B2 1 +' + test_expect_success 'blame ancestor' ' check_count -h master A 2 B 2 '