Skip to content
Snippets Groups Projects
Commit 6335c0de authored by Boris Feld's avatar Boris Feld
Browse files

obsolete: allow multiple predecessors in createmarkers

The logic for this change is similar to the change to `cleanupnodes` that we
did earlier. Now that the rebase code is trying to record a fold, we need to
actually record it in the markers. The first step is to have the markers
creation API able to receive such fold data.

To keep things sane, we restrict fold to on successors.
parent 99f0f052
Branches
Tags
No related merge requests found
......@@ -959,7 +959,7 @@
operation=None):
"""Add obsolete markers between changesets in a repo
<relations> must be an iterable of (<old>, (<new>, ...)[,{metadata}])
<relations> must be an iterable of ((<old>,...), (<new>, ...)[,{metadata}])
tuple. `old` and `news` are changectx. metadata is an optional dictionary
containing metadata for this marker only. It is merged with the global
metadata specified through the `metadata` argument of this function.
......@@ -993,8 +993,14 @@
with repo.transaction('add-obsolescence-marker') as tr:
markerargs = []
for rel in relations:
prec = rel[0]
if True:
predecessors = rel[0]
if not isinstance(predecessors, tuple):
# preserve compat with old API until all caller are migrated
predecessors = (predecessors,)
if 1 < len(predecessors) and len(rel[1]) != 1:
msg = 'Fold markers can only have 1 successors, not %d'
raise error.ProgrammingError(msg % len(rel[1]))
for prec in predecessors:
sucs = rel[1]
localmetadata = metadata.copy()
if 2 < len(rel):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment