Re: [PATCH 2 of 2] log: drop hack to fix order of revset (issue5100)

2016-09-20 Thread Pierre-Yves David



On 09/17/2016 12:17 PM, Yuya Nishihara wrote:

# HG changeset patch
# User Yuya Nishihara 
# Date 1462253040 -32400
#  Tue May 03 14:24:00 2016 +0900
# Node ID f99625523f84eaaedf48897322d5c9f6dce64bd9
# Parent  961b53cbadd0e17b1e5e745d0e3cc582cbf6603f
# EXP-Topic revsetflag
log: drop hack to fix order of revset (issue5100)

Specify ordered=True instead.


Pushed (I've fixed the message in flight)


This patch effectively backs out c407583cf5f6. revs.sort(reverse=True)
is replaced by revs.reverse() because the matcher should no longer reorder
revisions.


Given that most expensive matching is now lazy, (so actually happening 
after the actual match call, should we drop the double reverse all entirely?


Cheers,

--
Pierre-Yves David
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


Re: [PATCH 2 of 2] log: drop hack to fix order of revset (issue5100)

2016-09-17 Thread Yuya Nishihara
On Sat, 17 Sep 2016 19:17:40 +0900, Yuya Nishihara wrote:
> # HG changeset patch
> # User Yuya Nishihara 
> # Date 1462253040 -32400
> #  Tue May 03 14:24:00 2016 +0900
> # Node ID f99625523f84eaaedf48897322d5c9f6dce64bd9
> # Parent  961b53cbadd0e17b1e5e745d0e3cc582cbf6603f
> # EXP-Topic revsetflag
> log: drop hack to fix order of revset (issue5100)
> 
> Specify ordered=True instead.

Oops, this should be s/ordered=True/order=revset.followorder/.
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


[PATCH 2 of 2] log: drop hack to fix order of revset (issue5100)

2016-09-17 Thread Yuya Nishihara
# HG changeset patch
# User Yuya Nishihara 
# Date 1462253040 -32400
#  Tue May 03 14:24:00 2016 +0900
# Node ID f99625523f84eaaedf48897322d5c9f6dce64bd9
# Parent  961b53cbadd0e17b1e5e745d0e3cc582cbf6603f
# EXP-Topic revsetflag
log: drop hack to fix order of revset (issue5100)

Specify ordered=True instead.

This patch effectively backs out c407583cf5f6. revs.sort(reverse=True)
is replaced by revs.reverse() because the matcher should no longer reorder
revisions.

diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py
--- a/mercurial/cmdutil.py
+++ b/mercurial/cmdutil.py
@@ -2189,19 +2189,10 @@ def getlogrevs(repo, pats, opts):
 # order, because most filters deal with the changelog.
 if not opts.get('rev'):
 revs.reverse()
-matcher = revset.match(repo.ui, expr)
-# Revset matches can reorder revisions. "A or B" typically returns
-# returns the revision matching A then the revision matching B. Sort
-# again to fix that.
-fixopts = ['branch', 'only_branch', 'keyword', 'user']
-oldrevs = revs
+matcher = revset.match(repo.ui, expr, order=revset.followorder)
 revs = matcher(repo, revs)
 if not opts.get('rev'):
-revs.sort(reverse=True)
-elif len(pats) > 1 or any(len(opts.get(op, [])) > 1 for op in fixopts):
-# XXX "A or B" is known to change the order; fix it by filtering
-# matched set again (issue5100)
-revs = oldrevs & revs
+revs.reverse()
 if limit is not None:
 limitedrevs = []
 for idx, r in enumerate(revs):
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel