hgext3rd/evolve/serveronly.py
author Pierre-Yves David <pierre-yves.david@octobus.net>
Tue, 12 Jun 2018 10:40:57 +0200
changeset 3836 b91db6989231
parent 3510 3bd642f11313
child 4235 e30119dfd626
permissions -rw-r--r--
branching: merge with stable Merging with the new 8.0.1 release.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
660
e6e47c432ffd hgext: add a simpler extension to enable obsolete on server
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
     1
'''enable experimental obsolescence feature of Mercurial
e6e47c432ffd hgext: add a simpler extension to enable obsolete on server
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
     2
e6e47c432ffd hgext: add a simpler extension to enable obsolete on server
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
     3
OBSOLESCENCE IS AN EXPERIMENTAL FEATURE MAKE SURE YOU UNDERSTOOD THE INVOLVED
e6e47c432ffd hgext: add a simpler extension to enable obsolete on server
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
     4
CONCEPT BEFORE USING IT.
e6e47c432ffd hgext: add a simpler extension to enable obsolete on server
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
     5
e6e47c432ffd hgext: add a simpler extension to enable obsolete on server
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
     6
/!\ THIS EXTENSION IS INTENDED FOR SERVER SIDE ONLY USAGE /!\
e6e47c432ffd hgext: add a simpler extension to enable obsolete on server
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
     7
e6e47c432ffd hgext: add a simpler extension to enable obsolete on server
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
     8
For client side usages it is recommended to use the evolve extension for
e6e47c432ffd hgext: add a simpler extension to enable obsolete on server
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
     9
improved user interface.'''
e6e47c432ffd hgext: add a simpler extension to enable obsolete on server
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    10
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: 2032
diff changeset
    11
from __future__ import absolute_import
ce39d0f9976d serveronly: give the sub extension a way to access to the 'evolve' module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2032
diff changeset
    12
ce39d0f9976d serveronly: give the sub extension a way to access to the 'evolve' module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2032
diff changeset
    13
import sys
ce39d0f9976d serveronly: give the sub extension a way to access to the 'evolve' module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2032
diff changeset
    14
import os
1837
c8b07459c9bb serveronly: clean up imports
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1808
diff changeset
    15
3149
79a926b557f1 compat: drop support for older exchange protocol
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 3080
diff changeset
    16
from mercurial import obsolete
79a926b557f1 compat: drop support for older exchange protocol
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 3080
diff changeset
    17
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: 2032
diff changeset
    18
try:
2050
604ecce27969 serveronly: use the same extensions metadata than evolve
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2047
diff changeset
    19
    from . import (
2541
383efcb9ed0f serveronly: also backport the fixes from 5adb8bdb935e
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2331
diff changeset
    20
        compat,
2061
302aa8bbb3af exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2060
diff changeset
    21
        exthelper,
2050
604ecce27969 serveronly: use the same extensions metadata than evolve
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2047
diff changeset
    22
        metadata,
2331
d49f376598f8 serveronly: also enable the obscache for server only setting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2276
diff changeset
    23
        obscache,
2061
302aa8bbb3af exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2060
diff changeset
    24
        obsexchange,
2050
604ecce27969 serveronly: use the same extensions metadata than evolve
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2047
diff changeset
    25
    )
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: 2032
diff changeset
    26
except ValueError as exc:
2071
8fbf75ca8a08 serveronly: replace exc.message with str(exc)
Arun Kulshreshtha <kulshrax@fb.com>
parents: 2063
diff changeset
    27
    if str(exc) != 'Attempted relative import in non-package':
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: 2032
diff changeset
    28
        raise
ce39d0f9976d serveronly: give the sub extension a way to access to the 'evolve' module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2032
diff changeset
    29
    # extension imported using direct path
ce39d0f9976d serveronly: give the sub extension a way to access to the 'evolve' module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2032
diff changeset
    30
    sys.path.insert(0, os.path.dirname(os.path.dirname(__file__)))
2050
604ecce27969 serveronly: use the same extensions metadata than evolve
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2047
diff changeset
    31
    from evolve import (
2541
383efcb9ed0f serveronly: also backport the fixes from 5adb8bdb935e
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2331
diff changeset
    32
        compat,
2061
302aa8bbb3af exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2060
diff changeset
    33
        exthelper,
2050
604ecce27969 serveronly: use the same extensions metadata than evolve
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2047
diff changeset
    34
        metadata,
2331
d49f376598f8 serveronly: also enable the obscache for server only setting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2276
diff changeset
    35
        obscache,
2061
302aa8bbb3af exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2060
diff changeset
    36
        obsexchange,
2050
604ecce27969 serveronly: use the same extensions metadata than evolve
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2047
diff changeset
    37
    )
604ecce27969 serveronly: use the same extensions metadata than evolve
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2047
diff changeset
    38
604ecce27969 serveronly: use the same extensions metadata than evolve
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2047
diff changeset
    39
__version__ = metadata.__version__
604ecce27969 serveronly: use the same extensions metadata than evolve
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2047
diff changeset
    40
testedwith = metadata.testedwith
604ecce27969 serveronly: use the same extensions metadata than evolve
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2047
diff changeset
    41
minimumhgversion = metadata.minimumhgversion
604ecce27969 serveronly: use the same extensions metadata than evolve
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2047
diff changeset
    42
buglink = metadata.buglink
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: 2032
diff changeset
    43
2061
302aa8bbb3af exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2060
diff changeset
    44
eh = exthelper.exthelper()
2541
383efcb9ed0f serveronly: also backport the fixes from 5adb8bdb935e
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2331
diff changeset
    45
eh.merge(compat.eh)
2331
d49f376598f8 serveronly: also enable the obscache for server only setting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2276
diff changeset
    46
eh.merge(obscache.eh)
2061
302aa8bbb3af exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2060
diff changeset
    47
eh.merge(obsexchange.eh)
302aa8bbb3af exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2060
diff changeset
    48
uisetup = eh.final_uisetup
302aa8bbb3af exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2060
diff changeset
    49
extsetup = eh.final_extsetup
302aa8bbb3af exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2060
diff changeset
    50
reposetup = eh.final_reposetup
302aa8bbb3af exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2060
diff changeset
    51
cmdtable = eh.cmdtable
3080
461c9d940519 evolve: registed configitems if available
Boris Feld <boris.feld@octobus.net>
parents: 2541
diff changeset
    52
configtable = eh.configtable
1245
580a8f5ea462 discovery: port the new hashing version to simple4server
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1097
diff changeset
    53
2061
302aa8bbb3af exchange: dispatch all code in 'serveronly' to the appropriate submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2060
diff changeset
    54
@eh.reposetup
2276
2d55ae0d6ce7 serveronly: fix reposetup
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2275
diff changeset
    55
def default2evolution(ui, repo):
3185
0c64d0242ac2 config: clarify that config is only enabled on the repository is it setup for
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 3149
diff changeset
    56
    evolveopts = repo.ui.configlist('experimental', 'evolution')
1215
004e21b8d67b server4simple: remove use of obsolete._enabled
Durham Goode <durham@fb.com>
parents: 1097
diff changeset
    57
    if not evolveopts:
004e21b8d67b server4simple: remove use of obsolete._enabled
Durham Goode <durham@fb.com>
parents: 1097
diff changeset
    58
        evolveopts = 'all'
3185
0c64d0242ac2 config: clarify that config is only enabled on the repository is it setup for
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 3149
diff changeset
    59
        repo.ui.setconfig('experimental', 'evolution', evolveopts)
3149
79a926b557f1 compat: drop support for older exchange protocol
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 3080
diff changeset
    60
    if obsolete.isenabled(repo, 'exchange'):
3510
3bd642f11313 legacy: respect explicit config for server.bundle1
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 3185
diff changeset
    61
        # if no config explicitly set, disable bundle1
3bd642f11313 legacy: respect explicit config for server.bundle1
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 3185
diff changeset
    62
        if not isinstance(repo.ui.config('server', 'bundle1'), str):
3bd642f11313 legacy: respect explicit config for server.bundle1
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 3185
diff changeset
    63
            repo.ui.setconfig('server', 'bundle1', False)