diff mercurial/commands.py @ 3509:630e0b216192

fix graph traversal in commands.bundle (it wasn't O(n))
author Benoit Boissinot <benoit.boissinot@ens-lyon.org>
date Wed, 25 Oct 2006 18:22:04 +0200
parents aa8f086cb141
children 5c57a5a17963
line wrap: on
line diff
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -839,6 +839,7 @@ def bundle(ui, repo, fname, dest=None, *
             visit = list(revs)
         else:
             visit = repo.changelog.heads()
+        seen = sets.Set(visit)
         while visit:
             n = visit.pop(0)
             parents = [p for p in repo.changelog.parents(n)
@@ -846,7 +847,10 @@ def bundle(ui, repo, fname, dest=None, *
             if len(parents) == 0:
                 o.insert(0, n)
             else:
-                visit.extend(parents)
+                for p in parents:
+                    if p not in seen:
+                        seen.add(p)
+                        visit.append(p)
     else:
         setremoteconfig(ui, opts)
         dest = ui.expandpath(dest or 'default-push', dest or 'default')