mercurial/obsutil.py
changeset 36953 b9bbcf9ffac1
parent 36607 c6061cadb400
child 36954 efc4fb344c05
equal deleted inserted replaced
36952:b24cde12061b 36953:b9bbcf9ffac1
    14     node as nodemod,
    14     node as nodemod,
    15     phases,
    15     phases,
    16     util,
    16     util,
    17 )
    17 )
    18 from .utils import dateutil
    18 from .utils import dateutil
       
    19 
       
    20 ### obsolescence marker flag
       
    21 
       
    22 ## bumpedfix flag
       
    23 #
       
    24 # When a changeset A' succeed to a changeset A which became public, we call A'
       
    25 # "bumped" because it's a successors of a public changesets
       
    26 #
       
    27 # o    A' (bumped)
       
    28 # |`:
       
    29 # | o  A
       
    30 # |/
       
    31 # o    Z
       
    32 #
       
    33 # The way to solve this situation is to create a new changeset Ad as children
       
    34 # of A. This changeset have the same content than A'. So the diff from A to A'
       
    35 # is the same than the diff from A to Ad. Ad is marked as a successors of A'
       
    36 #
       
    37 # o   Ad
       
    38 # |`:
       
    39 # | x A'
       
    40 # |'|
       
    41 # o | A
       
    42 # |/
       
    43 # o Z
       
    44 #
       
    45 # But by transitivity Ad is also a successors of A. To avoid having Ad marked
       
    46 # as bumped too, we add the `bumpedfix` flag to the marker. <A', (Ad,)>.
       
    47 # This flag mean that the successors express the changes between the public and
       
    48 # bumped version and fix the situation, breaking the transitivity of
       
    49 # "bumped" here.
       
    50 bumpedfix = 1
       
    51 usingsha256 = 2
    19 
    52 
    20 class marker(object):
    53 class marker(object):
    21     """Wrap obsolete marker raw data"""
    54     """Wrap obsolete marker raw data"""
    22 
    55 
    23     def __init__(self, repo, data):
    56     def __init__(self, repo, data):