summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael J Gruber <git@grubix.eu>2017-09-14 15:15:20 +0200
committerJunio C Hamano <gitster@pobox.com>2017-09-17 08:50:46 +0900
commit349830c3739d3f2b96fc3765b2cd6aba3390d9a4 (patch)
tree23065f6718ebf769a03fe4ba5c9a2e10c0e3b48d
parentadefb327927fa7a4ada01e54193b027567cb7473 (diff)
downloadgit-mg/merge-base-fork-point.tar.gz
merge-base: find fork-point outside partial reflogmg/merge-base-fork-point
In fork-point mode, merge-base adds the commit at refname to a list of candidates to walk from only when the reflog is empty. Therefore, it fails to find merge bases that are descendants of the most recent reflog entry. Add the commit at the tip unconditionally so that a merge base on the history of refname is found in any case, independent of the state of the reflog. Signed-off-by: Michael J Gruber <git@grubix.eu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--builtin/merge-base.c2
-rwxr-xr-xt/t6010-merge-base.sh8
2 files changed, 9 insertions, 1 deletions
diff --git a/builtin/merge-base.c b/builtin/merge-base.c
index 926a7615ea..b5b4cf7eac 100644
--- a/builtin/merge-base.c
+++ b/builtin/merge-base.c
@@ -174,7 +174,7 @@ static int handle_fork_point(int argc, const char **argv)
revs.initial = 1;
for_each_reflog_ent(refname, collect_one_reflog_ent, &revs);
- if (!revs.nr && !get_oid(refname, &oid))
+ if (!get_oid(refname, &oid))
add_one_commit(&oid, &revs);
for (i = 0; i < revs.nr; i++)
diff --git a/t/t6010-merge-base.sh b/t/t6010-merge-base.sh
index 850463d4f2..78342896c7 100755
--- a/t/t6010-merge-base.sh
+++ b/t/t6010-merge-base.sh
@@ -275,6 +275,14 @@ test_expect_success '--fork-point works with merge-base outside reflog' '
test_cmp expect actual
'
+test_expect_success '--fork-point works with merge-base outside partial reflog' '
+ git -c core.logallrefupdates=true branch partial-reflog base &&
+ git rev-parse no-reflog >.git/refs/heads/partial-reflog &&
+ git rev-parse no-reflog >expect &&
+ git merge-base --fork-point partial-reflog no-reflog >actual &&
+ test_cmp expect actual
+'
+
test_expect_success 'merge-base --octopus --all for complex tree' '
# Best common ancestor for JE, JAA and JDD is JC
# JE