diff -r b24cde12061b -r b9bbcf9ffac1 mercurial/obsutil.py --- a/mercurial/obsutil.py Wed Feb 21 17:21:10 2018 +0100 +++ b/mercurial/obsutil.py Tue Mar 13 20:34:38 2018 +0800 @@ -17,6 +17,39 @@ ) from .utils import dateutil +### obsolescence marker flag + +## bumpedfix flag +# +# When a changeset A' succeed to a changeset A which became public, we call A' +# "bumped" because it's a successors of a public changesets +# +# o A' (bumped) +# |`: +# | o A +# |/ +# o Z +# +# The way to solve this situation is to create a new changeset Ad as children +# of A. This changeset have the same content than A'. So the diff from A to A' +# is the same than the diff from A to Ad. Ad is marked as a successors of A' +# +# o Ad +# |`: +# | x A' +# |'| +# o | A +# |/ +# o Z +# +# But by transitivity Ad is also a successors of A. To avoid having Ad marked +# as bumped too, we add the `bumpedfix` flag to the marker. . +# This flag mean that the successors express the changes between the public and +# bumped version and fix the situation, breaking the transitivity of +# "bumped" here. +bumpedfix = 1 +usingsha256 = 2 + class marker(object): """Wrap obsolete marker raw data"""