diff -r 88aae5382519 -r 728438da3090 mercurial/revset.py --- a/mercurial/revset.py Fri Mar 14 10:22:51 2014 -0700 +++ b/mercurial/revset.py Fri Mar 14 10:23:54 2014 -0700 @@ -2425,6 +2425,17 @@ return orderedlazyset(self, filterfunc, ascending=self._ascending) return lazyset(self, filterfunc) + def __add__(self, other): + """When both collections are ascending or descending, preserve the order + """ + kwargs = {} + if self._ascending is not None: + if self.isascending() and other.isascending(): + kwargs['ascending'] = True + if self.isdescending() and other.isdescending(): + kwargs['ascending'] = False + return _addset(self, other, **kwargs) + def _iterator(self): """Iterate over both collections without repeating elements