blame: handle --first-parent
commit95a4fb0eac20de024fed242a7c9227af86334202
authorJeff King <peff@peff.net>
Tue, 15 Sep 2015 10:05:39 +0000 (15 06:05 -0400)
committerJunio C Hamano <gitster@pobox.com>
Wed, 16 Sep 2015 16:59:05 +0000 (16 09:59 -0700)
tree5099a9f345c300b8290a4937550aeffb32c349ea
parent27ea6f85beff1173ec74349fa35c45951feee570
blame: handle --first-parent

The revision.c options-parser will parse "--first-parent"
for us, but the blame code does not actually respect it, as
we simply iterate over the whole list returned by
first_scapegoat(). We can fix this by returning a
truncated parent list.

Note that we could technically also do so by limiting the
return value of num_scapegoats(), but that is less robust.
We would rely on nobody ever looking at the "next" pointer
from the returned list.

Combining "--reverse" with "--first-parent" is more
complicated, and will probably involve cooperation from
revision.c. Since the desired semantics are not even clear,
let's punt on this for now, but explicitly disallow it to
avoid confusing users (this is not really a regression,
since it did something nonsensical before).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/blame.c
t/annotate-tests.sh