diff -r 31aa2e5b0750 -r d100702326d5 mercurial/context.py --- a/mercurial/context.py Wed Feb 23 13:21:55 2011 +0500 +++ b/mercurial/context.py Wed Feb 23 17:27:05 2011 -0600 @@ -550,10 +550,14 @@ return None def ancestors(self): - seen = set(str(self)) + seen = set() visit = [self] while visit: - for parent in visit.pop(0).parents(): + parents = visit.pop(0).parents() + if len(parents) > 1 and parents[1].rev() > parents[0].rev(): + # make sure we return ancestors in reverse revision order + parents = reversed(parents) + for parent in parents: s = str(parent) if s not in seen: visit.append(parent)