summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRussell Belfer <rb@github.com>2013-06-25 16:36:50 -0700
committerRussell Belfer <rb@github.com>2013-06-25 16:36:50 -0700
commitb0401c686788300bd4fb16cf395533458611eda1 (patch)
treeba25e467609c6e7efbce77aff53cb5797d1e01e9
parentd0c36a0baf42d751c23e13df08c7ec9f800dd40f (diff)
parent24ba6d3f8cec2524a3e18157dd9149bbfb654650 (diff)
downloadlibgit2-b0401c686788300bd4fb16cf395533458611eda1.tar.gz
Merge pull request #1681 from arthurschreiber/patch-1
Prefer younger merge bases over older ones.
-rw-r--r--src/commit_list.c2
-rw-r--r--tests-clar/revwalk/mergebase.c12
2 files changed, 13 insertions, 1 deletions
diff --git a/src/commit_list.c b/src/commit_list.c
index bd5b5201a..64416e54d 100644
--- a/src/commit_list.c
+++ b/src/commit_list.c
@@ -36,7 +36,7 @@ git_commit_list *git_commit_list_insert_by_date(git_commit_list_node *item, git_
git_commit_list *p;
while ((p = *pp) != NULL) {
- if (git_commit_list_time_cmp(p->item, item) < 0)
+ if (git_commit_list_time_cmp(p->item, item) > 0)
break;
pp = &p->next;
diff --git a/tests-clar/revwalk/mergebase.c b/tests-clar/revwalk/mergebase.c
index e2617ab0e..a2dbbc738 100644
--- a/tests-clar/revwalk/mergebase.c
+++ b/tests-clar/revwalk/mergebase.c
@@ -123,6 +123,18 @@ void test_revwalk_mergebase__no_common_ancestor_returns_ENOTFOUND(void)
cl_assert_equal_sz(4, behind);
}
+void test_revwalk_mergebase__prefer_youngest_merge_base(void)
+{
+ git_oid result, one, two, expected;
+
+ cl_git_pass(git_oid_fromstr(&one, "a4a7dce85cf63874e984719f4fdd239f5145052f "));
+ cl_git_pass(git_oid_fromstr(&two, "be3563ae3f795b2b4353bcce3a527ad0a4f7f644"));
+ cl_git_pass(git_oid_fromstr(&expected, "c47800c7266a2be04c571c04d5a6614691ea99bd"));
+
+ cl_git_pass(git_merge_base(&result, _repo, &one, &two));
+ cl_assert(git_oid_cmp(&result, &expected) == 0);
+}
+
void test_revwalk_mergebase__no_off_by_one_missing(void)
{
git_oid result, one, two;