# HG changeset patch # User Pulkit Goyal <7895pulkit@gmail.com> # Date 1516547019 -19800 # Node ID e97bfd529e72a1e9c027cd0b19b61d13c25620ab # Parent a3052824101d54a8f74947af36e66b5fe9eee619 evolve: move _orderrevs() function evolvecmd.py _orderrevs() is a function which is used to order the revs in which the instability needs to be solved if we have multiple revisions to resolve. diff -r a3052824101d -r e97bfd529e72 hgext3rd/evolve/__init__.py --- a/hgext3rd/evolve/__init__.py Sun Jan 21 20:28:06 2018 +0530 +++ b/hgext3rd/evolve/__init__.py Sun Jan 21 20:33:39 2018 +0530 @@ -253,7 +253,6 @@ """.strip() import sys -import collections import struct try: @@ -947,41 +946,6 @@ _deprecatealias('gup', 'next') _deprecatealias('gdown', 'previous') -def _orderrevs(repo, revs): - """Compute an ordering to solve instability for the given revs - - revs is a list of unstable revisions. - - Returns the same revisions ordered to solve their instability from the - bottom to the top of the stack that the stabilization process will produce - eventually. - - This ensures the minimal number of stabilizations, as we can stabilize each - revision on its final stabilized destination. - """ - # Step 1: Build the dependency graph - dependencies, rdependencies = utility.builddependencies(repo, revs) - # Step 2: Build the ordering - # Remove the revisions with no dependency(A) and add them to the ordering. - # Removing these revisions leads to new revisions with no dependency (the - # one depending on A) that we can remove from the dependency graph and add - # to the ordering. We progress in a similar fashion until the ordering is - # built - solvablerevs = collections.deque([r for r in sorted(dependencies.keys()) - if not dependencies[r]]) - ordering = [] - while solvablerevs: - rev = solvablerevs.popleft() - for dependent in rdependencies[rev]: - dependencies[dependent].remove(rev) - if not dependencies[dependent]: - solvablerevs.append(dependent) - del dependencies[rev] - ordering.append(rev) - - ordering.extend(sorted(dependencies)) - return ordering - @eh.command( '^evolve|stabilize|solve', [('n', 'dry-run', False, @@ -1180,7 +1144,7 @@ replacements = {} # Order the revisions if targetcat == 'orphan': - revs = _orderrevs(repo, revs) + revs = evolvecmd._orderrevs(repo, revs) for rev in revs: curctx = repo[rev] progresscb() diff -r a3052824101d -r e97bfd529e72 hgext3rd/evolve/evolvecmd.py --- a/hgext3rd/evolve/evolvecmd.py Sun Jan 21 20:28:06 2018 +0530 +++ b/hgext3rd/evolve/evolvecmd.py Sun Jan 21 20:33:39 2018 +0530 @@ -398,6 +398,41 @@ class MergeFailure(error.Abort): pass +def _orderrevs(repo, revs): + """Compute an ordering to solve instability for the given revs + + revs is a list of unstable revisions. + + Returns the same revisions ordered to solve their instability from the + bottom to the top of the stack that the stabilization process will produce + eventually. + + This ensures the minimal number of stabilizations, as we can stabilize each + revision on its final stabilized destination. + """ + # Step 1: Build the dependency graph + dependencies, rdependencies = utility.builddependencies(repo, revs) + # Step 2: Build the ordering + # Remove the revisions with no dependency(A) and add them to the ordering. + # Removing these revisions leads to new revisions with no dependency (the + # one depending on A) that we can remove from the dependency graph and add + # to the ordering. We progress in a similar fashion until the ordering is + # built + solvablerevs = collections.deque([r for r in sorted(dependencies.keys()) + if not dependencies[r]]) + ordering = [] + while solvablerevs: + rev = solvablerevs.popleft() + for dependent in rdependencies[rev]: + dependencies[dependent].remove(rev) + if not dependencies[dependent]: + solvablerevs.append(dependent) + del dependencies[rev] + ordering.append(rev) + + ordering.extend(sorted(dependencies)) + return ordering + def relocate(repo, orig, dest, pctx=None, keepbranch=False): """rewrites the orig rev on dest rev