diff --git a/mercurial/changelog.py b/mercurial/changelog.py --- a/mercurial/changelog.py +++ b/mercurial/changelog.py @@ -18,6 +18,7 @@ from . import ( encoding, error, revlog, + revset, util, ) @@ -184,6 +185,16 @@ class changelog(revlog.revlog): self.rev(self.node(0)) return self._nodecache + def reachableroots(self, minroot, heads, roots, includepath=False): + reachable = self.index.reachableroots(minroot, heads, roots, + includepath) + if reachable is None: + # The C code hasn't been able to initialize a list, something went + # really wrong, let's rely on the pure implementation in that case + raise AttributeError() + else: + return revset.baseset(sorted(reachable)) + def headrevs(self): if self.filteredrevs: try: