setup.py
author Sushil khanchi <sushilkhanchi97@gmail.com>
Sun, 29 Dec 2019 23:59:41 +0530
changeset 5239 13152b2fe8f7
parent 4900 155e986045eb
permissions -rw-r--r--
evolve: refactor content-divergence resolution logic > What is the case we are looking at? This is about refactoring the part of content-div resolution logic where it decides which cset should be relocated and where. > What is a "topologicial common ancestors" vs a "greatest common ancestors"? `tca` is an ancestor which we can decide/find by looking at the at graph visually for e.g ``` c3(*) c4(*) | | c2(x) c1(x) c5 | / \ | / c0 ``` (c5 is the successor of c2 and c1) now here, `tca` of c3 and c4 is: c0 `gca` of c3 and c4 is: c5 > What is the new top-level logic/behavior that makes it better? The old code had some unnecessary edge cases just because we were using `gca`, since it can point to a revision that is not a topological ancestor. For e.g see b779b40f996e Eventually, the code around this was getting messy unnecessarily. So I looked into it and found a simple and more robust approach. And in new code, it is simple and straightforward (and easy to understand), where we handle the following 4 cases when solving content-div: 1) when both are on the same parent => (no need to do anything special, and simply proceed) 2) both are on the different parent but a) `tca` is the parent of one of them or b) there is no non-obsolete revision between `tca` and one of the divergent cset. => (relocate one to the other side and proceed) 3) both are on different parents and `tca` is not the parent of any of them and there is at least one non-obsolete cset between tca and both the divergent cset i.e (tca::div1) and (tca::div2) both the ranges have at least one non-obs revision. => (this is the case which we don't handle yet, but the solution would be to prompt the user to choose an evolve destination.) 4) both are in the parent-child relation => (both are merged and new cset will be based on the successor of `tca`) Changes in test-evolve-issue5958.t demonstrate that new code also covered case4 because in a resolution of "two divergent csets with parent-child relation" there should be one cset as a result and no orphan revs (as you can see there was an orphan before this patch).
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1242
cf846d47bb7e setup: allow including inhibit in the build
Durham Goode <durham@fb.com>
parents: 1149
diff changeset
     1
import os
1839
1bc5e62fc0c7 Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff changeset
     2
from distutils.core import setup
1149
a206ee74f129 evolve: add various version info to save time on troubleshooting
anatoly techtonik <techtonik@gmail.com>
parents: 1138
diff changeset
     3
from os.path import dirname, join
a206ee74f129 evolve: add various version info to save time on troubleshooting
anatoly techtonik <techtonik@gmail.com>
parents: 1138
diff changeset
     4
2049
b81d3775006b evolve: move extension metadata in their own module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2036
diff changeset
     5
META_PATH = 'hgext3rd/evolve/metadata.py'
b81d3775006b evolve: move extension metadata in their own module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2036
diff changeset
     6
b81d3775006b evolve: move extension metadata in their own module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2036
diff changeset
     7
def get_metadata():
b81d3775006b evolve: move extension metadata in their own module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2036
diff changeset
     8
    meta = {}
b81d3775006b evolve: move extension metadata in their own module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2036
diff changeset
     9
    fullpath = join(dirname(__file__), META_PATH)
4792
9f2e480ad786 py3: make setup.py py3 compatible
Ludovic Chabant <ludovic@chabant.com>
parents: 3424
diff changeset
    10
    with open(fullpath, 'r') as fp:
9f2e480ad786 py3: make setup.py py3 compatible
Ludovic Chabant <ludovic@chabant.com>
parents: 3424
diff changeset
    11
        exec(fp.read(), meta)
2049
b81d3775006b evolve: move extension metadata in their own module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2036
diff changeset
    12
    return meta
496
d3d9df795b4d [pkg] Add a setup.py
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    13
2049
b81d3775006b evolve: move extension metadata in their own module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2036
diff changeset
    14
def get_version():
2020
143c8e4dc22d topic: merge the topic extension in the evolve repository
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1808 2016
diff changeset
    15
    '''Read version info from a file without importing it'''
4900
155e986045eb py3: fix setup.py --version
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 4878
diff changeset
    16
    return get_metadata()['__version__'].decode()
2049
b81d3775006b evolve: move extension metadata in their own module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2036
diff changeset
    17
b81d3775006b evolve: move extension metadata in their own module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2036
diff changeset
    18
def min_hg_version():
b81d3775006b evolve: move extension metadata in their own module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2036
diff changeset
    19
    '''Read version info from a file without importing it'''
b81d3775006b evolve: move extension metadata in their own module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2036
diff changeset
    20
    return get_metadata()['minimumhgversion']
2020
143c8e4dc22d topic: merge the topic extension in the evolve repository
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1808 2016
diff changeset
    21
1808
202ac6c94b7f hgext3rd: move 'simple4server' as 'evolve.serveronly'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1807
diff changeset
    22
py_modules = [
3206
3ccde4699cf0 topic: introduce a minimal extensions to enable topic on the server
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2069
diff changeset
    23
    'hgext3rd.serverminitopic',
1808
202ac6c94b7f hgext3rd: move 'simple4server' as 'evolve.serveronly'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1807
diff changeset
    24
]
1806
9f42f819267b evolve: move the extensions to 'hgext3rd'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1642
diff changeset
    25
py_packages = [
9f42f819267b evolve: move the extensions to 'hgext3rd'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1642
diff changeset
    26
    'hgext3rd',
2052
05170e635e26 setup.py: include all evolve submodule
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2049
diff changeset
    27
    'hgext3rd.evolve',
3424
efac9aad0963 packaging: properly install the evolve.thirdparty module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 3206
diff changeset
    28
    'hgext3rd.evolve.thirdparty',
2020
143c8e4dc22d topic: merge the topic extension in the evolve repository
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1808 2016
diff changeset
    29
    'hgext3rd.topic',
1242
cf846d47bb7e setup: allow including inhibit in the build
Durham Goode <durham@fb.com>
parents: 1149
diff changeset
    30
]
4876
1a47cc2728ff setup: make runnable from other dirs
Ian Moody <moz-ian@perix.co.uk>
parents: 4817
diff changeset
    31
py_packagedir = {
1a47cc2728ff setup: make runnable from other dirs
Ian Moody <moz-ian@perix.co.uk>
parents: 4817
diff changeset
    32
    'hgext3rd': join(dirname(__file__), 'hgext3rd')
1a47cc2728ff setup: make runnable from other dirs
Ian Moody <moz-ian@perix.co.uk>
parents: 4817
diff changeset
    33
}
1242
cf846d47bb7e setup: allow including inhibit in the build
Durham Goode <durham@fb.com>
parents: 1149
diff changeset
    34
4817
a9b4c4849338 python3: add supported python versions to setup.py
Raphaël Gomès <rgomes@octobus.net>
parents: 4792
diff changeset
    35
py_versions = '>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <4'
a9b4c4849338 python3: add supported python versions to setup.py
Raphaël Gomès <rgomes@octobus.net>
parents: 4792
diff changeset
    36
1452
1bcbd14cf159 merge back with 3.3 compat branch
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1451
diff changeset
    37
if os.environ.get('INCLUDE_INHIBIT'):
1807
a53efee7d8b0 hgext3rd: move 'directaccess' and 'inhibit' in 'evolve.hack'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1806
diff changeset
    38
    py_modules.append('hgext3rd.evolve.hack.inhibit')
a53efee7d8b0 hgext3rd: move 'directaccess' and 'inhibit' in 'evolve.hack'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1806
diff changeset
    39
    py_modules.append('hgext3rd.evolve.hack.directaccess')
1452
1bcbd14cf159 merge back with 3.3 compat branch
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1451
diff changeset
    40
1839
1bc5e62fc0c7 Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff changeset
    41
setup(
496
d3d9df795b4d [pkg] Add a setup.py
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    42
    name='hg-evolve',
2049
b81d3775006b evolve: move extension metadata in their own module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2036
diff changeset
    43
    version=get_version(),
496
d3d9df795b4d [pkg] Add a setup.py
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    44
    author='Pierre-Yves David',
2069
7d15775d8585 setup: add author_email
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 2067
diff changeset
    45
    author_email='pierre-yves.david@ens-lyon.org',
496
d3d9df795b4d [pkg] Add a setup.py
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    46
    maintainer='Pierre-Yves David',
916
48e68d3b0144 fix maintainer email
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 859
diff changeset
    47
    maintainer_email='pierre-yves.david@ens-lyon.org',
1642
fb5e479080d8 project: change evolution domain to mercurial-scm
timeless@gmail.com
parents: 1617
diff changeset
    48
    url='https://www.mercurial-scm.org/doc/evolution/',
496
d3d9df795b4d [pkg] Add a setup.py
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    49
    description='Flexible evolution of Mercurial history.',
4876
1a47cc2728ff setup: make runnable from other dirs
Ian Moody <moz-ian@perix.co.uk>
parents: 4817
diff changeset
    50
    long_description=open(join(dirname(__file__), 'README')).read(),
1839
1bc5e62fc0c7 Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff changeset
    51
    keywords='hg mercurial',
1bc5e62fc0c7 Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff changeset
    52
    license='GPLv2+',
1806
9f42f819267b evolve: move the extensions to 'hgext3rd'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1642
diff changeset
    53
    py_modules=py_modules,
4817
a9b4c4849338 python3: add supported python versions to setup.py
Raphaël Gomès <rgomes@octobus.net>
parents: 4792
diff changeset
    54
    packages=py_packages,
4876
1a47cc2728ff setup: make runnable from other dirs
Ian Moody <moz-ian@perix.co.uk>
parents: 4817
diff changeset
    55
    package_dir=py_packagedir,
4817
a9b4c4849338 python3: add supported python versions to setup.py
Raphaël Gomès <rgomes@octobus.net>
parents: 4792
diff changeset
    56
    python_requires=py_versions
1839
1bc5e62fc0c7 Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff changeset
    57
)