revset: point out wrong behavior in fullreposet
authorPierre-Yves David <pierre-yves.david@fb.com>
Thu, 11 Jun 2015 14:00:13 -0700
changeset 25547 99a1f73af85b
parent 25546 59cdf631388b
child 25548 9584bcf27637
revset: point out wrong behavior in fullreposet I cannot fix all issues in revset because I've got other things to do, but let's write down all the brokenness to help other people reading and fixing.
mercurial/revset.py
--- a/mercurial/revset.py	Wed Jun 10 17:33:57 2015 -0700
+++ b/mercurial/revset.py	Thu Jun 11 14:00:13 2015 -0700
@@ -3541,6 +3541,17 @@
             # object.
             other = baseset(other - self._hiddenrevs)
 
+        # XXX As fullreposet is also used as bootstrap, this is wrong.
+        #
+        # With a giveme312() revset returning [3,1,2], this makes
+        #   'hg log -r "giveme312()"' -> 1, 2, 3 (wrong)
+        # We cannot just drop it because other usage still need to sort it:
+        #   'hg log -r "all() and giveme312()"' -> 1, 2, 3 (right)
+        #
+        # There is also some faulty revset implementations that rely on it
+        # (eg: children as of its state in e8075329c5fb)
+        #
+        # When we fix the two points above we can move this into the if clause
         other.sort(reverse=self.isdescending())
         return other