hgext3rd/evolve/utility.py
author Pierre-Yves David <pierre-yves.david@octobus.net>
Thu, 21 Dec 2017 03:30:13 +0100
changeset 3346 f4e28b781143
parent 3340 fd90e73bf79a
child 3366 83b372eceb81
permissions -rw-r--r--
stablerange: use mergepoint based algorithm for the official stable range Changing the official stable range will impact all users of the infrastructure. We update version number of the cache file and discovery methods to clarify this. We do no keep compatibility with the old method over the wire. The new algorithm is much better and keeping compat is more work than we have time for right now.
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
3340
fd90e73bf79a caches: factorise the cache warming check
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 3309
diff changeset
    39
fd90e73bf79a caches: factorise the cache warming check
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 3309
diff changeset
    40
def shouldwarmcache(repo):
fd90e73bf79a caches: factorise the cache warming check
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 3309
diff changeset
    41
    configbool = repo.ui.configbool
fd90e73bf79a caches: factorise the cache warming check
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 3309
diff changeset
    42
    if not configbool('experimental', 'obshashrange', False):
fd90e73bf79a caches: factorise the cache warming check
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 3309
diff changeset
    43
        return False
fd90e73bf79a caches: factorise the cache warming check
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 3309
diff changeset
    44
    if not configbool('experimental', 'obshashrange.warm-cache', True):
fd90e73bf79a caches: factorise the cache warming check
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 3309
diff changeset
    45
        return False
3346
f4e28b781143 stablerange: use mergepoint based algorithm for the official stable range
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 3340
diff changeset
    46
    maxrevs = repo.ui.configint('experimental', 'obshashrange.max-revs', None)
f4e28b781143 stablerange: use mergepoint based algorithm for the official stable range
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 3340
diff changeset
    47
    if maxrevs is not None and maxrevs < len(repo.unfiltered()):
f4e28b781143 stablerange: use mergepoint based algorithm for the official stable range
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 3340
diff changeset
    48
        return False
3340
fd90e73bf79a caches: factorise the cache warming check
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 3309
diff changeset
    49
    return True