hgext3rd/evolve/utility.py
author Pierre-Yves David <pierre-yves.david@octobus.net>
Mon, 18 Dec 2017 06:48:49 +0100
changeset 3309 09db38b34cb9
parent 2763 4a5b0c373e65
child 3340 fd90e73bf79a
permissions -rw-r--r--
parents: add a utility to filter parents There is various strange case of merge out there that needs to be handled. We add an utility function to handle them all.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2047
ce39d0f9976d serveronly: give the sub extension a way to access to the 'evolve' module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     1
# Various utility function for the evolve extension
ce39d0f9976d serveronly: give the sub extension a way to access to the 'evolve' module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     2
#
ce39d0f9976d serveronly: give the sub extension a way to access to the 'evolve' module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     3
# Copyright 2017 Pierre-Yves David <pierre-yves.david@ens-lyon.org>
ce39d0f9976d serveronly: give the sub extension a way to access to the 'evolve' module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     4
#
ce39d0f9976d serveronly: give the sub extension a way to access to the 'evolve' module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     5
# This software may be used and distributed according to the terms of the
ce39d0f9976d serveronly: give the sub extension a way to access to the 'evolve' module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     6
# GNU General Public License version 2 or any later version.
ce39d0f9976d serveronly: give the sub extension a way to access to the 'evolve' module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     7
3309
09db38b34cb9 parents: add a utility to filter parents
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2763
diff changeset
     8
from mercurial.node import nullrev
09db38b34cb9 parents: add a utility to filter parents
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2763
diff changeset
     9
2763
4a5b0c373e65 commands: move the touch to the 'evocommands' module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2125
diff changeset
    10
shorttemplate = "[{label('evolve.rev', rev)}] {desc|firstline}\n"
4a5b0c373e65 commands: move the touch to the 'evocommands' module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2125
diff changeset
    11
2047
ce39d0f9976d serveronly: give the sub extension a way to access to the 'evolve' module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    12
def obsexcmsg(ui, message, important=False):
ce39d0f9976d serveronly: give the sub extension a way to access to the 'evolve' module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    13
    verbose = ui.configbool('experimental', 'verbose-obsolescence-exchange',
ce39d0f9976d serveronly: give the sub extension a way to access to the 'evolve' module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    14
                            False)
ce39d0f9976d serveronly: give the sub extension a way to access to the 'evolve' module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    15
    if verbose:
ce39d0f9976d serveronly: give the sub extension a way to access to the 'evolve' module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    16
        message = 'OBSEXC: ' + message
ce39d0f9976d serveronly: give the sub extension a way to access to the 'evolve' module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    17
    if important or verbose:
ce39d0f9976d serveronly: give the sub extension a way to access to the 'evolve' module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    18
        ui.status(message)
2054
f9d65d24b9f9 discovery: split discovery related code in 'obsdiscovery'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2047
diff changeset
    19
f9d65d24b9f9 discovery: split discovery related code in 'obsdiscovery'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2047
diff changeset
    20
def obsexcprg(ui, *args, **kwargs):
f9d65d24b9f9 discovery: split discovery related code in 'obsdiscovery'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2047
diff changeset
    21
    topic = 'obsmarkers exchange'
f9d65d24b9f9 discovery: split discovery related code in 'obsdiscovery'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2047
diff changeset
    22
    if ui.configbool('experimental', 'verbose-obsolescence-exchange', False):
f9d65d24b9f9 discovery: split discovery related code in 'obsdiscovery'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2047
diff changeset
    23
        topic = 'OBSEXC'
f9d65d24b9f9 discovery: split discovery related code in 'obsdiscovery'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2047
diff changeset
    24
    ui.progress(topic, *args, **kwargs)
3309
09db38b34cb9 parents: add a utility to filter parents
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2763
diff changeset
    25
09db38b34cb9 parents: add a utility to filter parents
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2763
diff changeset
    26
def filterparents(parents):
09db38b34cb9 parents: add a utility to filter parents
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2763
diff changeset
    27
    """filter nullrev parents
09db38b34cb9 parents: add a utility to filter parents
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2763
diff changeset
    28
09db38b34cb9 parents: add a utility to filter parents
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2763
diff changeset
    29
    (and other crazyness)"""
09db38b34cb9 parents: add a utility to filter parents
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2763
diff changeset
    30
    p1, p2 = parents
09db38b34cb9 parents: add a utility to filter parents
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2763
diff changeset
    31
    if p1 == nullrev and p2 == nullrev:
09db38b34cb9 parents: add a utility to filter parents
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2763
diff changeset
    32
        return ()
09db38b34cb9 parents: add a utility to filter parents
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2763
diff changeset
    33
    elif p1 != nullrev and (p2 == nullrev or p1 == p2):
09db38b34cb9 parents: add a utility to filter parents
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2763
diff changeset
    34
        return (p1,)
09db38b34cb9 parents: add a utility to filter parents
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2763
diff changeset
    35
    elif p1 == nullrev and p2 != nullrev:
09db38b34cb9 parents: add a utility to filter parents
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2763
diff changeset
    36
        return (p2,)
09db38b34cb9 parents: add a utility to filter parents
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2763
diff changeset
    37
    else:
09db38b34cb9 parents: add a utility to filter parents
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2763
diff changeset
    38
        return parents