Eric Sunshine <sunshine@xxxxxxxxxxxxxx> writes: > Signed-off-by: Eric Sunshine <sunshine@xxxxxxxxxxxxxx> > --- With the previous step, what this one does is fairly obvious and straight-forward. Looking good ;-) > builtin/blame.c | 5 ++++- > t/annotate-tests.sh | 20 ++++++++++++++++++++ > 2 files changed, 24 insertions(+), 1 deletion(-) > > diff --git a/builtin/blame.c b/builtin/blame.c > index 7b084d8..1bf8056 100644 > --- a/builtin/blame.c > +++ b/builtin/blame.c > @@ -2280,6 +2280,7 @@ int cmd_blame(int argc, const char **argv, const char *prefix) > int cmd_is_annotate = !strcmp(argv[0], "annotate"); > struct range_set ranges; > unsigned int range_i; > + long anchor; > > git_config(git_blame_config, NULL); > init_revisions(&revs, NULL); > @@ -2475,11 +2476,12 @@ parse_done: > if (lno && !range_list.nr) > string_list_append(&range_list, xstrdup("1")); > > + anchor = 1; > range_set_init(&ranges, range_list.nr); > for (range_i = 0; range_i < range_list.nr; ++range_i) { > long bottom, top; > if (parse_range_arg(range_list.items[range_i].string, > - nth_line_cb, &sb, lno, 1, > + nth_line_cb, &sb, lno, anchor, > &bottom, &top, sb.path)) > usage(blame_usage); > if (lno < top || ((lno || bottom) && lno < bottom)) > @@ -2490,6 +2492,7 @@ parse_done: > top = lno; > bottom--; > range_set_append_unsafe(&ranges, bottom, top); > + anchor = top + 1; > } > sort_and_merge_range_set(&ranges); > > diff --git a/t/annotate-tests.sh b/t/annotate-tests.sh > index 77083d9..b963d36 100644 > --- a/t/annotate-tests.sh > +++ b/t/annotate-tests.sh > @@ -303,6 +303,26 @@ test_expect_success 'blame -L multiple (superset/subset: unordered)' ' > check_count -L3,5 -L2,8 A 1 B 1 B1 1 B2 1 C 1 D 1 "A U Thor" 1 > ' > > +test_expect_success 'blame -L /RE/ (relative)' ' > + check_count -L3,3 -L/fox/ B1 1 B2 1 C 1 D 1 "A U Thor" 1 > +' > + > +test_expect_success 'blame -L /RE/ (relative: no preceding range)' ' > + check_count -L/dog/ A 1 B 1 B1 1 B2 1 C 1 D 1 "A U Thor" 1 > +' > + > +test_expect_success 'blame -L /RE/ (relative: adjacent)' ' > + check_count -L1,1 -L/dog/,+1 A 1 E 1 > +' > + > +test_expect_success 'blame -L /RE/ (relative: not found)' ' > + test_must_fail $PROG -L4,4 -L/dog/ file > +' > + > +test_expect_success 'blame -L /RE/ (relative: end-of-file)' ' > + test_must_fail $PROG -L, -L/$/ file > +' > + > test_expect_success 'setup -L :regex' ' > tr Q "\\t" >hello.c <<-\EOF && > int main(int argc, const char *argv[]) -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html