From patchwork Tue Dec 9 00:06:07 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [STABLE] log: fix log revset instability From: Durham Goode X-Patchwork-Id: 7021 Message-Id: To: Date: Mon, 8 Dec 2014 16:06:07 -0800 # HG changeset patch # User Durham Goode # Date 1418082114 28800 # Mon Dec 08 15:41:54 2014 -0800 # Node ID d5dbb3d633dd9299e4344e44a155e420c8b43aa7 # Parent 098a8c4c2627e08b60cc8a877d47c1507ddb6f0d log: fix log revset instability The log/graphlog revset was not producing stable results since it was iterating over a dict. Now we sort before iterating to guarantee a fixed order. This fixes some potential flakiness in the tests. diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py --- a/mercurial/cmdutil.py +++ b/mercurial/cmdutil.py @@ -1795,7 +1795,7 @@ def _makelogrevset(repo, pats, opts, rev filematcher = lambda rev: match expr = [] - for op, val in opts.iteritems(): + for op, val in sorted(opts.iteritems()): if not val: continue if op not in opt2revset: diff --git a/tests/test-glog.t b/tests/test-glog.t --- a/tests/test-glog.t +++ b/tests/test-glog.t @@ -1660,15 +1660,15 @@ Test --follow on a directory (group (and (func + ('symbol', 'ancestors') + ('symbol', '.')) + (func ('symbol', '_matchfiles') (list (list ('string', 'r:') ('string', 'd:relpath')) - ('string', 'p:dir'))) - (func - ('symbol', 'ancestors') - ('symbol', '.')))) + ('string', 'p:dir'))))) $ hg up -q tip Test --follow on file not in parent revision @@ -1685,15 +1685,15 @@ Test --follow and patterns (group (and (func + ('symbol', 'ancestors') + ('symbol', '.')) + (func ('symbol', '_matchfiles') (list (list ('string', 'r:') ('string', 'd:relpath')) - ('string', 'p:glob:*'))) - (func - ('symbol', 'ancestors') - ('symbol', '.')))) + ('string', 'p:glob:*'))))) Test --follow on a single rename @@ -1862,15 +1862,15 @@ Test --removed (group (and (func + ('symbol', 'ancestors') + ('symbol', '.')) + (func ('symbol', '_matchfiles') (list (list ('string', 'r:') ('string', 'd:relpath')) - ('string', 'p:a'))) - (func - ('symbol', 'ancestors') - ('symbol', '.')))) + ('string', 'p:a'))))) Test --patch and --stat with --follow and --follow-first