diff -r 15fbbc939373 -r 2b630e4c8f2f mercurial/cmdutil.py --- a/mercurial/cmdutil.py Tue Dec 08 23:36:06 2009 +0100 +++ b/mercurial/cmdutil.py Thu Dec 10 00:14:22 2009 +0100 @@ -1169,7 +1169,7 @@ class followfilter(object): def __init__(self, onlyfirst=False): self.startrev = nullrev - self.roots = [] + self.roots = set() self.onlyfirst = onlyfirst def match(self, rev): @@ -1187,18 +1187,18 @@ if rev > self.startrev: # forward: all descendants if not self.roots: - self.roots.append(self.startrev) + self.roots.add(self.startrev) for parent in realparents(rev): if parent in self.roots: - self.roots.append(rev) + self.roots.add(rev) return True else: # backwards: all parents if not self.roots: - self.roots.extend(realparents(self.startrev)) + self.roots.update(realparents(self.startrev)) if rev in self.roots: self.roots.remove(rev) - self.roots.extend(realparents(rev)) + self.roots.update(realparents(rev)) return True return False