reachableroots: construct and sort baseset in revset module
authorYuya Nishihara <yuya@tcha.org>
Fri, 28 Aug 2015 11:14:24 +0900
changeset 26094 df41c7be16d6
parent 26093 204131131766
child 26095 6eed95ca4c03
reachableroots: construct and sort baseset in revset module This can remove the dependency from changelog to revset, which seems a bit awkward for me.
mercurial/changelog.py
mercurial/revset.py
tests/test-parseindex.t
--- a/mercurial/changelog.py	Fri Aug 21 16:12:24 2015 -0700
+++ b/mercurial/changelog.py	Fri Aug 28 11:14:24 2015 +0900
@@ -18,7 +18,6 @@
     encoding,
     error,
     revlog,
-    revset,
     util,
 )
 
@@ -186,10 +185,7 @@
         return self._nodecache
 
     def reachableroots(self, minroot, heads, roots, includepath=False):
-        rroots = self.index.reachableroots2(minroot, heads, roots, includepath)
-        rroots = revset.baseset(rroots)
-        rroots.sort()
-        return rroots
+        return self.index.reachableroots2(minroot, heads, roots, includepath)
 
     def headrevs(self):
         if self.filteredrevs:
--- a/mercurial/revset.py	Fri Aug 21 16:12:24 2015 -0700
+++ b/mercurial/revset.py	Fri Aug 28 11:14:24 2015 +0900
@@ -92,7 +92,7 @@
 
     If includepath is True, return (<roots>::<heads>)."""
     if not roots:
-        return baseset()
+        return []
     parentrevs = repo.changelog.parentrevs
     roots = set(roots)
     visit = list(heads)
@@ -123,8 +123,6 @@
         for parent in seen[rev]:
             if parent in reachable:
                 reached(rev)
-    reachable = baseset(reachable)
-    reachable.sort()
     return reachable
 
 def reachableroots(repo, roots, heads, includepath=False):
@@ -137,9 +135,12 @@
     roots = list(roots)
     heads = list(heads)
     try:
-        return repo.changelog.reachableroots(minroot, heads, roots, includepath)
+        revs = repo.changelog.reachableroots(minroot, heads, roots, includepath)
     except AttributeError:
-        return reachablerootspure(repo, minroot, roots, heads, includepath)
+        revs = reachablerootspure(repo, minroot, roots, heads, includepath)
+    revs = baseset(revs)
+    revs.sort()
+    return revs
 
 elements = {
     # token-type: binding-strength, primary, prefix, infix, suffix
--- a/tests/test-parseindex.t	Fri Aug 21 16:12:24 2015 -0700
+++ b/tests/test-parseindex.t	Fri Aug 28 11:14:24 2015 +0900
@@ -96,9 +96,9 @@
   >         print inst
   > EOF
   good heads:
-  0: <baseset+ [0]>
-  1: <baseset+ [0]>
-  -1: <baseset+ []>
+  0: [0]
+  1: [0]
+  -1: []
   bad heads:
   2: head out of range
   10000: head out of range
@@ -106,14 +106,14 @@
   -10000: head out of range
   None: an integer is required
   good roots:
-  0: <baseset+ [0]>
-  1: <baseset+ [1]>
-  -1: <baseset+ [-1]>
+  0: [0]
+  1: [1]
+  -1: [-1]
   out-of-range roots are ignored:
-  2: <baseset+ []>
-  10000: <baseset+ []>
-  -2: <baseset+ []>
-  -10000: <baseset+ []>
+  2: []
+  10000: []
+  -2: []
+  -10000: []
   bad roots:
   None: an integer is required