diff options
author | Russell Belfer <rb@github.com> | 2013-06-25 16:36:50 -0700 |
---|---|---|
committer | Russell Belfer <rb@github.com> | 2013-06-25 16:36:50 -0700 |
commit | b0401c686788300bd4fb16cf395533458611eda1 (patch) | |
tree | ba25e467609c6e7efbce77aff53cb5797d1e01e9 | |
parent | d0c36a0baf42d751c23e13df08c7ec9f800dd40f (diff) | |
parent | 24ba6d3f8cec2524a3e18157dd9149bbfb654650 (diff) | |
download | libgit2-b0401c686788300bd4fb16cf395533458611eda1.tar.gz |
Merge pull request #1681 from arthurschreiber/patch-1
Prefer younger merge bases over older ones.
-rw-r--r-- | src/commit_list.c | 2 | ||||
-rw-r--r-- | tests-clar/revwalk/mergebase.c | 12 |
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; |