diff --git a/hgext/convert/hg.py b/hgext/convert/hg.py
index 91f3ac205816a05fdb9880c887a0fde690310023_aGdleHQvY29udmVydC9oZy5weQ==..1093ad1e890348078fdffdc0dd0ee5791b16f3e6_aGdleHQvY29udmVydC9oZy5weQ== 100644
--- a/hgext/convert/hg.py
+++ b/hgext/convert/hg.py
@@ -259,7 +259,7 @@
                                  % startnode)
             startrev = self.repo.changelog.rev(startnode)
             children = {startnode: 1}
-            for rev in self.repo.changelog.descendants(startrev):
+            for rev in self.repo.changelog.descendants([startrev]):
                 children[self.repo.changelog.node(rev)] = 1
             self.keep = children.__contains__
         else:
diff --git a/hgext/mq.py b/hgext/mq.py
index 91f3ac205816a05fdb9880c887a0fde690310023_aGdleHQvbXEucHk=..1093ad1e890348078fdffdc0dd0ee5791b16f3e6_aGdleHQvbXEucHk= 100644
--- a/hgext/mq.py
+++ b/hgext/mq.py
@@ -2963,7 +2963,7 @@
     if not revs:
         raise util.Abort(_('empty revision set'))
 
-    descendants = set(cl.descendants(*revs))
+    descendants = set(cl.descendants(revs))
     strippedrevs = revs.union(descendants)
     roots = revs.difference(descendants)
 
diff --git a/hgext/rebase.py b/hgext/rebase.py
index 91f3ac205816a05fdb9880c887a0fde690310023_aGdleHQvcmViYXNlLnB5..1093ad1e890348078fdffdc0dd0ee5791b16f3e6_aGdleHQvcmViYXNlLnB5 100644
--- a/hgext/rebase.py
+++ b/hgext/rebase.py
@@ -321,7 +321,7 @@
             # Remove no more useful revisions
             rebased = [rev for rev in state if state[rev] != nullmerge]
             if rebased:
-                if set(repo.changelog.descendants(min(rebased))) - set(state):
+                if set(repo.changelog.descendants([min(rebased)])) - set(state):
                     ui.warn(_("warning: new changesets detected "
                               "on source branch, not stripping\n"))
                 else:
@@ -575,7 +575,7 @@
 
     descendants = set()
     if dstates:
-        descendants = set(repo.changelog.descendants(*dstates))
+        descendants = set(repo.changelog.descendants(dstates))
     if descendants - set(dstates):
         repo.ui.warn(_("warning: new changesets detected on target branch, "
                        "can't abort\n"))
diff --git a/mercurial/context.py b/mercurial/context.py
index 91f3ac205816a05fdb9880c887a0fde690310023_bWVyY3VyaWFsL2NvbnRleHQucHk=..1093ad1e890348078fdffdc0dd0ee5791b16f3e6_bWVyY3VyaWFsL2NvbnRleHQucHk= 100644
--- a/mercurial/context.py
+++ b/mercurial/context.py
@@ -227,7 +227,7 @@
             yield changectx(self._repo, a)
 
     def descendants(self):
-        for d in self._repo.changelog.descendants(self._rev):
+        for d in self._repo.changelog.descendants([self._rev]):
             yield changectx(self._repo, d)
 
     def _fileinfo(self, path):
diff --git a/mercurial/phases.py b/mercurial/phases.py
index 91f3ac205816a05fdb9880c887a0fde690310023_bWVyY3VyaWFsL3BoYXNlcy5weQ==..1093ad1e890348078fdffdc0dd0ee5791b16f3e6_bWVyY3VyaWFsL3BoYXNlcy5weQ== 100644
--- a/mercurial/phases.py
+++ b/mercurial/phases.py
@@ -189,7 +189,7 @@
                 if roots:
                     for rev in roots:
                         revs[rev] = phase
-                    for rev in repo.changelog.descendants(*roots):
+                    for rev in repo.changelog.descendants(roots):
                         revs[rev] = phase
             self._phaserevs = revs
         return self._phaserevs
diff --git a/mercurial/repair.py b/mercurial/repair.py
index 91f3ac205816a05fdb9880c887a0fde690310023_bWVyY3VyaWFsL3JlcGFpci5weQ==..1093ad1e890348078fdffdc0dd0ee5791b16f3e6_bWVyY3VyaWFsL3JlcGFpci5weQ== 100644
--- a/mercurial/repair.py
+++ b/mercurial/repair.py
@@ -74,7 +74,7 @@
     #  base = revision in the set that has no ancestor in the set)
     tostrip = set(striplist)
     for rev in striplist:
-        for desc in cl.descendants(rev):
+        for desc in cl.descendants([rev]):
             tostrip.add(desc)
 
     files = _collectfiles(repo, striprev)
@@ -91,7 +91,7 @@
 
     # compute base nodes
     if saverevs:
-        descendants = set(cl.descendants(*saverevs))
+        descendants = set(cl.descendants(saverevs))
         saverevs.difference_update(descendants)
     savebases = [cl.node(r) for r in saverevs]
     stripbases = [cl.node(r) for r in tostrip]
diff --git a/mercurial/revlog.py b/mercurial/revlog.py
index 91f3ac205816a05fdb9880c887a0fde690310023_bWVyY3VyaWFsL3JldmxvZy5weQ==..1093ad1e890348078fdffdc0dd0ee5791b16f3e6_bWVyY3VyaWFsL3JldmxvZy5weQ== 100644
--- a/mercurial/revlog.py
+++ b/mercurial/revlog.py
@@ -398,7 +398,7 @@
                     seen.add(parent)
                     yield parent
 
-    def descendants(self, *revs):
+    def descendants(self, revs):
         """Generate the descendants of 'revs' in revision order.
 
         Yield a sequence of revision numbers starting with a child of
@@ -700,7 +700,7 @@
     def descendant(self, start, end):
         if start == nullrev:
             return True
-        for i in self.descendants(start):
+        for i in self.descendants([start]):
             if i == end:
                 return True
             elif i > end:
diff --git a/tests/test-revlog-ancestry.py b/tests/test-revlog-ancestry.py
index 91f3ac205816a05fdb9880c887a0fde690310023_dGVzdHMvdGVzdC1yZXZsb2ctYW5jZXN0cnkucHk=..1093ad1e890348078fdffdc0dd0ee5791b16f3e6_dGVzdHMvdGVzdC1yZXZsb2ctYW5jZXN0cnkucHk= 100644
--- a/tests/test-revlog-ancestry.py
+++ b/tests/test-revlog-ancestry.py
@@ -60,7 +60,7 @@
 
     # Descendants
     print '\n\nDescendants of 5'
-    for r in repo.changelog.descendants(5):
+    for r in repo.changelog.descendants([5]):
         print r,
 
     print '\nDescendants of 5 and 3'
@@ -64,7 +64,7 @@
         print r,
 
     print '\nDescendants of 5 and 3'
-    for r in repo.changelog.descendants(5, 3):
+    for r in repo.changelog.descendants([5, 3]):
         print r,
 
     print '\nDescendants of 5 and 4'
@@ -68,6 +68,6 @@
         print r,
 
     print '\nDescendants of 5 and 4'
-    for r in repo.changelog.descendants(5, 4):
+    for r in repo.changelog.descendants([5, 4]):
         print r,