# HG changeset patch # User Siddharth Agarwal # Date 2012-12-18 04:51:21 # Node ID 9c76da468a19a0cf9551b8a667d2913b0b0ee7be # Parent ff36650e4238810e260e954fc55b9fa0be069f18 rebase: use lazy ancestor membership testing For a repository with over 400,000 commits, rebasing one revision near tip, this avoids one walk up the DAG, speeding the operation up by around 0.8 seconds. diff --git a/hgext/rebase.py b/hgext/rebase.py --- a/hgext/rebase.py +++ b/hgext/rebase.py @@ -214,8 +214,8 @@ def rebase(ui, repo, **opts): else: originalwd, target, state = result if collapsef: - targetancestors = set(repo.changelog.ancestors([target])) - targetancestors.add(target) + targetancestors = repo.changelog.ancestors([target], + inclusive=True) external = checkexternal(repo, state, targetancestors) if keepbranchesf: @@ -233,8 +233,7 @@ def rebase(ui, repo, **opts): # Rebase if not targetancestors: - targetancestors = set(repo.changelog.ancestors([target])) - targetancestors.add(target) + targetancestors = repo.changelog.ancestors([target], inclusive=True) # Keep track of the current bookmarks in order to reset them later currentbookmarks = repo._bookmarks.copy()