Mercurial > public > mercurial-scm > hg
comparison mercurial/revset.py @ 29945:89dbae952ec1
revset: make reverse() noop depending on ordering requirement (BC)
Because smartset.reverse() may modify the underlying subset, it should be
called only if the set can define the ordering.
In the following example, 'a' and 'c' is the same object, so 'b.reverse()'
would reverse 'a' unexpectedly.
# '0:2 & reverse(all())'
<filteredset
<spanset- 0:2>, # a
<filteredset # b
<spanset- 0:2>, # c
<spanset+ 0:9>>>
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Tue, 03 May 2016 13:36:12 +0900 |
parents | 5f56a3b9675e |
children | 285a8c3e53f2 |
comparison
equal
deleted
inserted
replaced
29944:5f56a3b9675e | 29945:89dbae952ec1 |
---|---|
1831 return True | 1831 return True |
1832 return False | 1832 return False |
1833 | 1833 |
1834 return subset.filter(matches, condrepr=('<matching%r %r>', fields, revs)) | 1834 return subset.filter(matches, condrepr=('<matching%r %r>', fields, revs)) |
1835 | 1835 |
1836 @predicate('reverse(set)', safe=True) | 1836 @predicate('reverse(set)', safe=True, takeorder=True) |
1837 def reverse(repo, subset, x): | 1837 def reverse(repo, subset, x, order): |
1838 """Reverse order of set. | 1838 """Reverse order of set. |
1839 """ | 1839 """ |
1840 l = getset(repo, subset, x) | 1840 l = getset(repo, subset, x) |
1841 l.reverse() | 1841 if order == defineorder: |
1842 l.reverse() | |
1842 return l | 1843 return l |
1843 | 1844 |
1844 @predicate('roots(set)', safe=True) | 1845 @predicate('roots(set)', safe=True) |
1845 def roots(repo, subset, x): | 1846 def roots(repo, subset, x): |
1846 """Changesets in set with no parent changeset in set. | 1847 """Changesets in set with no parent changeset in set. |