hgext3rd/topic/stack.py
author Pierre-Yves David <pierre-yves.david@octobus.net>
Sat, 20 May 2017 03:31:42 +0200
branchstable
changeset 2458 62e4f9ff352b
parent 2348 5737e0680f10
child 2626 bc36a608e9e4
permissions -rw-r--r--
obshashrange: re-warm less revision after reset rewarming every single revision get very expensive quickly. Instead we warm few key revision and rely on the fact this will warm enough useful subrange.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1895
c8e4c6e03957 stack: add a very first version of stack display with 'hg topic --list'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
     1
# stack.py - code related to stack workflow
c8e4c6e03957 stack: add a very first version of stack display with 'hg topic --list'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
     2
#
c8e4c6e03957 stack: add a very first version of stack display with 'hg topic --list'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
     3
# This software may be used and distributed according to the terms of the
c8e4c6e03957 stack: add a very first version of stack display with 'hg topic --list'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
     4
# GNU General Public License version 2 or any later version.
1995
54d6dff699f0 stack: add some header with the topic name
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1991
diff changeset
     5
from mercurial.i18n import _
1936
31583ddda6d9 stack: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1925
diff changeset
     6
from mercurial import (
1985
03d6b685c16a topic: list the number of 'behind' changeset when --verbose is used
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1982
diff changeset
     7
    destutil,
1936
31583ddda6d9 stack: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1925
diff changeset
     8
    error,
1961
d9c7fced94fc stack: prevent crash when topic is rooted on nullid
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1957
diff changeset
     9
    node,
1936
31583ddda6d9 stack: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1925
diff changeset
    10
)
1982
d87fc4f749e6 evolve: extract the code copied from evolve in a submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1979
diff changeset
    11
from .evolvebits import builddependencies, _orderrevs, _singlesuccessor
1895
c8e4c6e03957 stack: add a very first version of stack display with 'hg topic --list'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    12
1904
f52c02bf47b7 stack: allow to refer to changeset using "t2" form
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1901
diff changeset
    13
def getstack(repo, topic):
1895
c8e4c6e03957 stack: add a very first version of stack display with 'hg topic --list'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    14
    # XXX need sorting
1897
38570c53b1cf stack: fix printing order in case of unstability
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1896
diff changeset
    15
    trevs = repo.revs("topic(%s) - obsolete()", topic)
38570c53b1cf stack: fix printing order in case of unstability
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1896
diff changeset
    16
    return _orderrevs(repo, trevs)
1895
c8e4c6e03957 stack: add a very first version of stack display with 'hg topic --list'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    17
2348
5737e0680f10 ui: hg topic now display if current revision is in bad state (issue5533)
Boris Feld <boris.feld@octobus.net>
parents: 2341
diff changeset
    18
def labelsgen(prefix, labelssuffix):
5737e0680f10 ui: hg topic now display if current revision is in bad state (issue5533)
Boris Feld <boris.feld@octobus.net>
parents: 2341
diff changeset
    19
    """ Takes a label prefix and a list of suffixes. Returns a string of the prefix
5737e0680f10 ui: hg topic now display if current revision is in bad state (issue5533)
Boris Feld <boris.feld@octobus.net>
parents: 2341
diff changeset
    20
    formatted with each suffix separated with a space.
5737e0680f10 ui: hg topic now display if current revision is in bad state (issue5533)
Boris Feld <boris.feld@octobus.net>
parents: 2341
diff changeset
    21
    """
5737e0680f10 ui: hg topic now display if current revision is in bad state (issue5533)
Boris Feld <boris.feld@octobus.net>
parents: 2341
diff changeset
    22
    return ' '.join(prefix % suffix for suffix in labelssuffix)
5737e0680f10 ui: hg topic now display if current revision is in bad state (issue5533)
Boris Feld <boris.feld@octobus.net>
parents: 2341
diff changeset
    23
1907
95874e8fc5f2 stack: add basic formatter and label support
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1906
diff changeset
    24
def showstack(ui, repo, topic, opts):
95874e8fc5f2 stack: add basic formatter and label support
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1906
diff changeset
    25
    fm = ui.formatter('topicstack', opts)
1909
36112e361ee4 stack: display the base of the stack
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1907
diff changeset
    26
    prev = None
1955
5452a575b4e5 topic: extract display from entry computation
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1954
diff changeset
    27
    entries = []
1991
ba79d23594d6 stack: reusing the index number in base when applicable
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1990
diff changeset
    28
    idxmap = {}
1995
54d6dff699f0 stack: add some header with the topic name
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1991
diff changeset
    29
54d6dff699f0 stack: add some header with the topic name
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1991
diff changeset
    30
    label = 'topic'
54d6dff699f0 stack: add some header with the topic name
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1991
diff changeset
    31
    if topic == repo.currenttopic:
54d6dff699f0 stack: add some header with the topic name
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1991
diff changeset
    32
        label = 'topic.active'
54d6dff699f0 stack: add some header with the topic name
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1991
diff changeset
    33
1996
5c40dd2cf131 stack: add some basic branch information
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1995
diff changeset
    34
    data = stackdata(repo, topic)
1998
302be26a3fd8 stack: add warning about multiple heads
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1997
diff changeset
    35
    fm.plain(_('### topic: %s') % ui.label(topic, label),
1995
54d6dff699f0 stack: add some header with the topic name
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1991
diff changeset
    36
             label='topic.stack.summary.topic')
1998
302be26a3fd8 stack: add warning about multiple heads
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1997
diff changeset
    37
302be26a3fd8 stack: add warning about multiple heads
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1997
diff changeset
    38
    if 1 < data['headcount']:
302be26a3fd8 stack: add warning about multiple heads
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1997
diff changeset
    39
        fm.plain(' (')
302be26a3fd8 stack: add warning about multiple heads
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1997
diff changeset
    40
        fm.plain('%d heads' % data['headcount'],
302be26a3fd8 stack: add warning about multiple heads
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1997
diff changeset
    41
                 label='topic.stack.summary.headcount.multiple')
302be26a3fd8 stack: add warning about multiple heads
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1997
diff changeset
    42
        fm.plain(')')
302be26a3fd8 stack: add warning about multiple heads
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1997
diff changeset
    43
    fm.plain('\n')
1997
ce86f7bb4b7b stack: add some behind information
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1996
diff changeset
    44
    fm.plain(_('### branch: %s')
1996
5c40dd2cf131 stack: add some basic branch information
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1995
diff changeset
    45
             % '+'.join(data['branches']), # XXX handle multi branches
5c40dd2cf131 stack: add some basic branch information
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1995
diff changeset
    46
             label='topic.stack.summary.branches')
1997
ce86f7bb4b7b stack: add some behind information
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1996
diff changeset
    47
    if data['behindcount'] == -1:
ce86f7bb4b7b stack: add some behind information
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1996
diff changeset
    48
        fm.plain(', ')
ce86f7bb4b7b stack: add some behind information
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1996
diff changeset
    49
        fm.plain('ambigious rebase destination', label='topic.stack.summary.behinderror')
ce86f7bb4b7b stack: add some behind information
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1996
diff changeset
    50
    elif data['behindcount']:
ce86f7bb4b7b stack: add some behind information
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1996
diff changeset
    51
        fm.plain(', ')
ce86f7bb4b7b stack: add some behind information
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1996
diff changeset
    52
        fm.plain('%d behind' % data['behindcount'], label='topic.stack.summary.behindcount')
ce86f7bb4b7b stack: add some behind information
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1996
diff changeset
    53
    fm.plain('\n')
1995
54d6dff699f0 stack: add some header with the topic name
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1991
diff changeset
    54
1954
61f36480740f stack: start indexing at 't1' instead of 't0'
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1936
diff changeset
    55
    for idx, r in enumerate(getstack(repo, topic), 1):
1925
8f8a48a2e97d stack: whitespace
Sean Farley <sean@farley.io>
parents: 1924
diff changeset
    56
        ctx = repo[r]
1909
36112e361ee4 stack: display the base of the stack
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1907
diff changeset
    57
        p1 = ctx.p1()
36112e361ee4 stack: display the base of the stack
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1907
diff changeset
    58
        if p1.obsolete():
36112e361ee4 stack: display the base of the stack
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1907
diff changeset
    59
            p1 = repo[_singlesuccessor(repo, p1)]
1961
d9c7fced94fc stack: prevent crash when topic is rooted on nullid
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1957
diff changeset
    60
        if p1.rev() != prev and p1.node() != node.nullid:
1991
ba79d23594d6 stack: reusing the index number in base when applicable
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1990
diff changeset
    61
            entries.append((idxmap.get(p1.rev()), False, p1))
ba79d23594d6 stack: reusing the index number in base when applicable
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1990
diff changeset
    62
        entries.append((idx, True, ctx))
ba79d23594d6 stack: reusing the index number in base when applicable
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1990
diff changeset
    63
        idxmap[ctx.rev()] = idx
1955
5452a575b4e5 topic: extract display from entry computation
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1954
diff changeset
    64
        prev = r
5452a575b4e5 topic: extract display from entry computation
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1954
diff changeset
    65
5452a575b4e5 topic: extract display from entry computation
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1954
diff changeset
    66
    # super crude initial version
1991
ba79d23594d6 stack: reusing the index number in base when applicable
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1990
diff changeset
    67
    for idx, isentry, ctx in entries[::-1]:
2348
5737e0680f10 ui: hg topic now display if current revision is in bad state (issue5533)
Boris Feld <boris.feld@octobus.net>
parents: 2341
diff changeset
    68
5737e0680f10 ui: hg topic now display if current revision is in bad state (issue5533)
Boris Feld <boris.feld@octobus.net>
parents: 2341
diff changeset
    69
        states = []
5737e0680f10 ui: hg topic now display if current revision is in bad state (issue5533)
Boris Feld <boris.feld@octobus.net>
parents: 2341
diff changeset
    70
        iscurrentrevision = repo.revs('%d and parents()', ctx.rev())
5737e0680f10 ui: hg topic now display if current revision is in bad state (issue5533)
Boris Feld <boris.feld@octobus.net>
parents: 2341
diff changeset
    71
5737e0680f10 ui: hg topic now display if current revision is in bad state (issue5533)
Boris Feld <boris.feld@octobus.net>
parents: 2341
diff changeset
    72
        if iscurrentrevision:
5737e0680f10 ui: hg topic now display if current revision is in bad state (issue5533)
Boris Feld <boris.feld@octobus.net>
parents: 2341
diff changeset
    73
            states.append('current')
5737e0680f10 ui: hg topic now display if current revision is in bad state (issue5533)
Boris Feld <boris.feld@octobus.net>
parents: 2341
diff changeset
    74
1991
ba79d23594d6 stack: reusing the index number in base when applicable
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1990
diff changeset
    75
        if not isentry:
1957
ea5553e47027 stack: change the ascii symbold for base
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1956
diff changeset
    76
            symbol = '^'
2348
5737e0680f10 ui: hg topic now display if current revision is in bad state (issue5533)
Boris Feld <boris.feld@octobus.net>
parents: 2341
diff changeset
    77
            # "base" is kind of a "ghost" entry
5737e0680f10 ui: hg topic now display if current revision is in bad state (issue5533)
Boris Feld <boris.feld@octobus.net>
parents: 2341
diff changeset
    78
            # skip other label for them (no current, no unstable)
5737e0680f10 ui: hg topic now display if current revision is in bad state (issue5533)
Boris Feld <boris.feld@octobus.net>
parents: 2341
diff changeset
    79
            states = ['base']
5737e0680f10 ui: hg topic now display if current revision is in bad state (issue5533)
Boris Feld <boris.feld@octobus.net>
parents: 2341
diff changeset
    80
        elif iscurrentrevision:
1906
5e9ce6310720 stack: show the currently active changeset and unstable ones
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1905
diff changeset
    81
            symbol = '@'
1955
5452a575b4e5 topic: extract display from entry computation
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1954
diff changeset
    82
        elif repo.revs('%d and unstable()', ctx.rev()):
1906
5e9ce6310720 stack: show the currently active changeset and unstable ones
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1905
diff changeset
    83
            symbol = '$'
2348
5737e0680f10 ui: hg topic now display if current revision is in bad state (issue5533)
Boris Feld <boris.feld@octobus.net>
parents: 2341
diff changeset
    84
            states.append('unstable')
1955
5452a575b4e5 topic: extract display from entry computation
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1954
diff changeset
    85
        else:
5452a575b4e5 topic: extract display from entry computation
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1954
diff changeset
    86
            symbol = ':'
2348
5737e0680f10 ui: hg topic now display if current revision is in bad state (issue5533)
Boris Feld <boris.feld@octobus.net>
parents: 2341
diff changeset
    87
            states.append('clean')
1907
95874e8fc5f2 stack: add basic formatter and label support
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1906
diff changeset
    88
        fm.startitem()
1991
ba79d23594d6 stack: reusing the index number in base when applicable
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1990
diff changeset
    89
        fm.data(isentry=isentry)
2348
5737e0680f10 ui: hg topic now display if current revision is in bad state (issue5533)
Boris Feld <boris.feld@octobus.net>
parents: 2341
diff changeset
    90
1955
5452a575b4e5 topic: extract display from entry computation
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1954
diff changeset
    91
        if idx is None:
5452a575b4e5 topic: extract display from entry computation
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1954
diff changeset
    92
            fm.plain('  ')
5452a575b4e5 topic: extract display from entry computation
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1954
diff changeset
    93
        else:
5452a575b4e5 topic: extract display from entry computation
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1954
diff changeset
    94
            fm.write('topic.stack.index', 't%d', idx,
2348
5737e0680f10 ui: hg topic now display if current revision is in bad state (issue5533)
Boris Feld <boris.feld@octobus.net>
parents: 2341
diff changeset
    95
                     label='topic.stack.index ' + labelsgen('topic.stack.index.%s', states))
1907
95874e8fc5f2 stack: add basic formatter and label support
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1906
diff changeset
    96
        fm.write('topic.stack.state.symbol', '%s', symbol,
2348
5737e0680f10 ui: hg topic now display if current revision is in bad state (issue5533)
Boris Feld <boris.feld@octobus.net>
parents: 2341
diff changeset
    97
                 label='topic.stack.state ' + labelsgen('topic.stack.state.%s', states))
1907
95874e8fc5f2 stack: add basic formatter and label support
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1906
diff changeset
    98
        fm.plain(' ')
1909
36112e361ee4 stack: display the base of the stack
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1907
diff changeset
    99
        fm.write('topic.stack.desc', '%s', ctx.description().splitlines()[0],
2348
5737e0680f10 ui: hg topic now display if current revision is in bad state (issue5533)
Boris Feld <boris.feld@octobus.net>
parents: 2341
diff changeset
   100
                 label='topic.stack.desc ' + labelsgen('topic.stack.desc.%s', states))
5737e0680f10 ui: hg topic now display if current revision is in bad state (issue5533)
Boris Feld <boris.feld@octobus.net>
parents: 2341
diff changeset
   101
        fm.condwrite(states != ['clean'] and idx is not None, 'topic.stack.state',
5737e0680f10 ui: hg topic now display if current revision is in bad state (issue5533)
Boris Feld <boris.feld@octobus.net>
parents: 2341
diff changeset
   102
                     ' (%s)', fm.formatlist(states, 'topic.stack.state'),
5737e0680f10 ui: hg topic now display if current revision is in bad state (issue5533)
Boris Feld <boris.feld@octobus.net>
parents: 2341
diff changeset
   103
                     label='topic.stack.state ' + labelsgen('topic.stack.state.%s', states))
1907
95874e8fc5f2 stack: add basic formatter and label support
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1906
diff changeset
   104
        fm.plain('\n')
2341
a5117a5becf8 ui: Fix hg stack json output
Boris Feld <boris.feld@octobus.net>
parents: 2003
diff changeset
   105
    fm.end()
1897
38570c53b1cf stack: fix printing order in case of unstability
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1896
diff changeset
   106
1977
137f8b04901e topic: list the number of changesets when --verbose is used
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1961
diff changeset
   107
def stackdata(repo, topic):
137f8b04901e topic: list the number of changesets when --verbose is used
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1961
diff changeset
   108
    """get various data about a stack
137f8b04901e topic: list the number of changesets when --verbose is used
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1961
diff changeset
   109
137f8b04901e topic: list the number of changesets when --verbose is used
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1961
diff changeset
   110
    :changesetcount: number of non-obsolete changesets in the stack
1978
e42dd4523c0d topic: list the number of troubled changesets when --verbose is used
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1977
diff changeset
   111
    :troubledcount: number on troubled changesets
1979
bee7a1ef8ba8 topic: list the number of head when --verbose is used
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1978
diff changeset
   112
    :headcount: number of heads on the topic
1985
03d6b685c16a topic: list the number of 'behind' changeset when --verbose is used
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1982
diff changeset
   113
    :behindcount: number of changeset on rebase destination
1977
137f8b04901e topic: list the number of changesets when --verbose is used
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1961
diff changeset
   114
    """
137f8b04901e topic: list the number of changesets when --verbose is used
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1961
diff changeset
   115
    data = {}
137f8b04901e topic: list the number of changesets when --verbose is used
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1961
diff changeset
   116
    revs = repo.revs("topic(%s) - obsolete()", topic)
137f8b04901e topic: list the number of changesets when --verbose is used
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1961
diff changeset
   117
    data['changesetcount'] = len(revs)
1978
e42dd4523c0d topic: list the number of troubled changesets when --verbose is used
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1977
diff changeset
   118
    data['troubledcount'] = len([r for r in revs if repo[r].troubled()])
1979
bee7a1ef8ba8 topic: list the number of head when --verbose is used
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1978
diff changeset
   119
    deps, rdeps = builddependencies(repo, revs)
bee7a1ef8ba8 topic: list the number of head when --verbose is used
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1978
diff changeset
   120
    data['headcount'] = len([r for r in revs if not rdeps[r]])
1985
03d6b685c16a topic: list the number of 'behind' changeset when --verbose is used
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1982
diff changeset
   121
    data['behindcount'] = 0
03d6b685c16a topic: list the number of 'behind' changeset when --verbose is used
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1982
diff changeset
   122
    if revs:
03d6b685c16a topic: list the number of 'behind' changeset when --verbose is used
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1982
diff changeset
   123
        minroot = [min(r for r in revs if not deps[r])]
03d6b685c16a topic: list the number of 'behind' changeset when --verbose is used
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1982
diff changeset
   124
        try:
03d6b685c16a topic: list the number of 'behind' changeset when --verbose is used
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1982
diff changeset
   125
            dest = destutil.destmerge(repo, action='rebase',
03d6b685c16a topic: list the number of 'behind' changeset when --verbose is used
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1982
diff changeset
   126
                                      sourceset=minroot,
03d6b685c16a topic: list the number of 'behind' changeset when --verbose is used
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1982
diff changeset
   127
                                      onheadcheck=False)
03d6b685c16a topic: list the number of 'behind' changeset when --verbose is used
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1982
diff changeset
   128
            data['behindcount'] = len(repo.revs("only(%d, %ld)", dest,
03d6b685c16a topic: list the number of 'behind' changeset when --verbose is used
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1982
diff changeset
   129
                                                minroot))
03d6b685c16a topic: list the number of 'behind' changeset when --verbose is used
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1982
diff changeset
   130
        except error.NoMergeDestAbort:
03d6b685c16a topic: list the number of 'behind' changeset when --verbose is used
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1982
diff changeset
   131
            data['behindcount'] = 0
03d6b685c16a topic: list the number of 'behind' changeset when --verbose is used
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1982
diff changeset
   132
        except error.ManyMergeDestAbort:
03d6b685c16a topic: list the number of 'behind' changeset when --verbose is used
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1982
diff changeset
   133
            data['behindcount'] = -1
1988
9a5d797d25be topic: list the branches this topic belong to when verbose
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1985
diff changeset
   134
    data['branches'] = sorted(set(repo[r].branch() for r in revs))
1979
bee7a1ef8ba8 topic: list the number of head when --verbose is used
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1978
diff changeset
   135
1977
137f8b04901e topic: list the number of changesets when --verbose is used
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1961
diff changeset
   136
    return data