From patchwork Fri Aug 15 00:51:48 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [2, of, 2, stable] changectx: ancestor should only prefer merge.preferancestor if it is a revision From: Mads Kiilerich X-Patchwork-Id: 5405 Message-Id: <3ceb2a936a2cf8672e53.1408063908@mk-desktop> To: mercurial-devel@selenic.com Date: Fri, 15 Aug 2014 02:51:48 +0200 # HG changeset patch # User Mads Kiilerich # Date 1408063604 -7200 # Fri Aug 15 02:46:44 2014 +0200 # Branch stable # Node ID 3ceb2a936a2cf8672e53b60d8c029175c498c8ca # Parent c6a530bf80a3cc127fadf7a94d96ddbf4074e837 changectx: ancestor should only prefer merge.preferancestor if it is a revision The value '*' do currently designate that bid merge should be used. The best way to test bid merge is to set preferancestor=* in the configuration file ... but then it would abort with unknown revision '*' when other code paths ended up in changectx.ancestor . Instead, just skip and ignore the value '*' when looking for a preferred ancestor. diff --git a/mercurial/context.py b/mercurial/context.py --- a/mercurial/context.py +++ b/mercurial/context.py @@ -553,6 +553,8 @@ class changectx(basectx): anc = cahs[0] else: for r in self._repo.ui.configlist('merge', 'preferancestor'): + if r == '*': + continue ctx = changectx(self._repo, r) anc = ctx.node() if anc in cahs: diff --git a/tests/test-merge-criss-cross.t b/tests/test-merge-criss-cross.t --- a/tests/test-merge-criss-cross.t +++ b/tests/test-merge-criss-cross.t @@ -341,4 +341,15 @@ http://stackoverflow.com/questions/93500 b c +Verify that the old context ancestor works with / despite preferancestor: + + $ hg log -r 'ancestor(head())' --config merge.preferancestor=1 -T '{rev}\n' + 1 + $ hg log -r 'ancestor(head())' --config merge.preferancestor=2 -T '{rev}\n' + 2 + $ hg log -r 'ancestor(head())' --config merge.preferancestor=3 -T '{rev}\n' + 1 + $ hg log -r 'ancestor(head())' --config merge.preferancestor='*' -T '{rev}\n' + 1 + $ cd ..