From: Johan Herland Date: Thu, 3 Jun 2010 23:17:37 +0000 (+0200) Subject: revision: Turn off history simplification in --ancestry-path mode X-Git-Tag: v1.7.2-rc0~16^2 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=cb7529e13bce186f8b883c9fbb08602cd3a0795f;p=git.git revision: Turn off history simplification in --ancestry-path mode When using --ancestry-path together with history simplification (typically triggered by path limiting), history simplification would get in the way of --ancestry-path by prematurely removing the parent links between commits on which the ancestry path calculations are made. This patch disables this history simplification when --ancestry-path is enabled. This is similar to what e.g. --full-history already does. The patch also includes a simple testcase verifying that --ancestry-path works together with path limiting. Signed-off-by: Johan Herland Signed-off-by: Junio C Hamano --- diff --git a/revision.c b/revision.c index eb6f849ce..96d7fa7f1 100644 --- a/revision.c +++ b/revision.c @@ -1190,6 +1190,7 @@ static int handle_revision_opt(struct rev_info *revs, int argc, const char **arg revs->first_parent_only = 1; } else if (!strcmp(arg, "--ancestry-path")) { revs->ancestry_path = 1; + revs->simplify_history = 0; revs->limited = 1; } else if (!strcmp(arg, "-g") || !strcmp(arg, "--walk-reflogs")) { init_reflog_walk(&revs->reflog_info); diff --git a/t/t6019-rev-list-ancestry-path.sh b/t/t6019-rev-list-ancestry-path.sh index 0230724ca..76410293b 100755 --- a/t/t6019-rev-list-ancestry-path.sh +++ b/t/t6019-rev-list-ancestry-path.sh @@ -10,6 +10,9 @@ test_description='--ancestry-path' # # D..M == E F G H I J K L M # --ancestry-path D..M == E F H I J L M +# +# D..M -- M.t == M +# --ancestry-path D..M -- M.t == M . ./test-lib.sh @@ -53,4 +56,18 @@ test_expect_success 'rev-list --ancestry-path D..M' ' test_cmp expect actual ' +test_expect_success 'rev-list D..M -- M.t' ' + echo M >expect && + git rev-list --format=%s D..M -- M.t | + sed -e "/^commit /d" >actual && + test_cmp expect actual +' + +test_expect_success 'rev-list --ancestry-patch D..M -- M.t' ' + echo M >expect && + git rev-list --ancestry-path --format=%s D..M -- M.t | + sed -e "/^commit /d" >actual && + test_cmp expect actual +' + test_done