mercurial/stack.py
author Pierre-Yves David <pierre-yves.david@octobus.net>
Tue, 09 Apr 2024 22:37:15 +0200
changeset 51595 3a6fae3bef35
parent 48875 6000f5b25c9b
permissions -rw-r--r--
outgoing: add a simple fastpath when there is no common This further speed up case like `hg bundle --all` for larger repository. ### data-env-vars.name = mozilla-try-2023-03-22-zstd-sparse-revlog # benchmark.name = hg.command.bundle # bin-env-vars.hg.flavor = default # bin-env-vars.hg.py-re2-module = default # benchmark.variants.revs = all # benchmark.variants.type = none-streamv2 before: 316.749699 after: 311.165461 (-1.76%, -5.58) There is further work to be done in this area like not doing any outgoing computation in the stream case for example. however the recent changes already gives use a large win for a small amount of local work. ### benchmark.name = hg.command.bundle # bin-env-vars.hg.flavor = default # bin-env-vars.hg.py-re2-module = default # benchmark.variants.revs = all # benchmark.variants.type = none-streamv2 ## data-env-vars.name = mercurial-public-2024-03-22-zstd-sparse-revlog pre-%ln-change: 1.263859 the-%ln-change: 0.700229 (-44.60%, -0.56) prev-changeset: 0.496050 (-60.75%, -0.77) this-changeset: 0.495243 (-60.81%, -0.77) ## data-env-vars.name = tryton-public-2024-03-22-zstd-sparse-revlog pre-%ln-change: 2.975765 the-%ln-change: 1.870798 (-37.13%, -1.10) prev-changeset: 1.461583 (-50.88%, -1.51) this-changeset: 1.469185 (-50.63%, -1.51) ## data-env-vars.name = pypy-2024-03-22-zstd-sparse-revlog pre-%ln-change: 4.540080 the-%ln-change: 3.401700 (-25.07%, -1.14) prev-changeset: 2.915810 (-35.78%, -1.62) this-changeset: 2.911643 (-35.87%, -1.63) ## data-env-vars.name = heptapod-public-2024-03-25-zstd-sparse-revlog pre-%ln-change: 10.138396 the-%ln-change: 7.750458 (-23.55%, -2.39) prev-changeset: 6.665565 (-34.25%, -3.47) this-changeset: 6.672078 (-34.19%, -3.47) ## data-env-vars.name = mozilla-try-2023-03-22-zstd-sparse-revlog pre-%ln-change: 399.484481 the-%ln-change: 346.508952 (-13.26%, -52.98) prev-changeset: 316.749699 (-20.71%, -82.73) this-changeset: 311.165461 (-22.11%, -88.32)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
37000
40583c7afd63 stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
     1
# stack.py - Mercurial functions for stack definition
40583c7afd63 stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
     2
#
46819
d4ba4d51f85f contributor: change mentions of mpm to olivia
Raphaël Gomès <rgomes@octobus.net>
parents: 43077
diff changeset
     3
#  Copyright Olivia Mackall <olivia@selenic.com> and other
37000
40583c7afd63 stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
     4
#
40583c7afd63 stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
     5
# This software may be used and distributed according to the terms of the
40583c7afd63 stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
     6
# GNU General Public License version 2 or any later version.
40583c7afd63 stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
     7
43075
57875cf423c9 style: run a patched black on a subset of mercurial
Augie Fackler <augie@google.com>
parents: 42960
diff changeset
     8
37000
40583c7afd63 stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
     9
def getstack(repo, rev=None):
37004
68fcc5503ec5 stack: return a sorted smartrev by default
Boris Feld <boris.feld@octobus.net>
parents: 37000
diff changeset
    10
    """return a sorted smartrev of the stack containing either rev if it is
68fcc5503ec5 stack: return a sorted smartrev by default
Boris Feld <boris.feld@octobus.net>
parents: 37000
diff changeset
    11
    not None or the current working directory parent.
37000
40583c7afd63 stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    12
40583c7afd63 stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    13
    The stack will always contain all drafts changesets which are ancestors to
40583c7afd63 stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    14
    the revision and are not merges.
40583c7afd63 stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    15
    """
40583c7afd63 stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    16
    if rev is None:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43075
diff changeset
    17
        rev = b'.'
37000
40583c7afd63 stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    18
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43075
diff changeset
    19
    revspec = b'only(%s) and not public() and not ::merge()'
42960
763028fc6a69 stack: use repo.revs() instead of revsetlang.formatspec() + scmutil.revrange()
Anton Shestakov <av6@dwimlabs.net>
parents: 42698
diff changeset
    20
    revisions = repo.revs(revspec, rev)
37004
68fcc5503ec5 stack: return a sorted smartrev by default
Boris Feld <boris.feld@octobus.net>
parents: 37000
diff changeset
    21
    revisions.sort()
68fcc5503ec5 stack: return a sorted smartrev by default
Boris Feld <boris.feld@octobus.net>
parents: 37000
diff changeset
    22
    return revisions