mercurial/stack.py
author Paul Morelle <paul.morelle@octobus.net>
Tue, 19 Jun 2018 15:03:58 +0200
changeset 38634 f0ea8b847831
parent 37007 68fcc5503ec5
child 42720 77c52ce50e6a
permissions -rw-r--r--
revlog: early return in _slicechunk when density is already good We don't need to do anything if we know we won't enter the second while loop. Save the overhead of the first loop by returning earlier.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
37003
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
#
40583c7afd63 stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
     3
#  Copyright Matt Mackall <mpm@selenic.com> and other
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
40583c7afd63 stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
     8
from __future__ import absolute_import
40583c7afd63 stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
     9
40583c7afd63 stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    10
from . import (
40583c7afd63 stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    11
    revsetlang,
40583c7afd63 stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    12
    scmutil,
40583c7afd63 stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    13
)
40583c7afd63 stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    14
40583c7afd63 stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    15
def getstack(repo, rev=None):
37007
68fcc5503ec5 stack: return a sorted smartrev by default
Boris Feld <boris.feld@octobus.net>
parents: 37003
diff changeset
    16
    """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: 37003
diff changeset
    17
    not None or the current working directory parent.
37003
40583c7afd63 stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    18
40583c7afd63 stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    19
    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
    20
    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
    21
    """
40583c7afd63 stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    22
    if rev is None:
40583c7afd63 stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    23
        rev = '.'
40583c7afd63 stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    24
40583c7afd63 stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    25
    revspec = 'reverse(only(%s) and not public() and not ::merge())'
40583c7afd63 stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    26
    revset = revsetlang.formatspec(revspec, rev)
37007
68fcc5503ec5 stack: return a sorted smartrev by default
Boris Feld <boris.feld@octobus.net>
parents: 37003
diff changeset
    27
    revisions = scmutil.revrange(repo, [revset])
68fcc5503ec5 stack: return a sorted smartrev by default
Boris Feld <boris.feld@octobus.net>
parents: 37003
diff changeset
    28
    revisions.sort()
68fcc5503ec5 stack: return a sorted smartrev by default
Boris Feld <boris.feld@octobus.net>
parents: 37003
diff changeset
    29
    return revisions