1014 for phase, nodes in toretract.items(): |
1014 for phase, nodes in toretract.items(): |
1015 phases.retractboundary(repo, tr, phase, nodes) |
1015 phases.retractboundary(repo, tr, phase, nodes) |
1016 for phase, nodes in toadvance.items(): |
1016 for phase, nodes in toadvance.items(): |
1017 phases.advanceboundary(repo, tr, phase, nodes) |
1017 phases.advanceboundary(repo, tr, phase, nodes) |
1018 |
1018 |
|
1019 mayusearchived = repo.ui.config('experimental', 'cleanup-as-archived') |
1019 # Obsolete or strip nodes |
1020 # Obsolete or strip nodes |
1020 if obsolete.isenabled(repo, obsolete.createmarkersopt): |
1021 if obsolete.isenabled(repo, obsolete.createmarkersopt): |
1021 # If a node is already obsoleted, and we want to obsolete it |
1022 # If a node is already obsoleted, and we want to obsolete it |
1022 # without a successor, skip that obssolete request since it's |
1023 # without a successor, skip that obssolete request since it's |
1023 # unnecessary. That's the "if s or not isobs(n)" check below. |
1024 # unnecessary. That's the "if s or not isobs(n)" check below. |
1031 rel = (tuple(unfi[n] for n in ns), tuple(unfi[m] for m in s)) |
1032 rel = (tuple(unfi[n] for n in ns), tuple(unfi[m] for m in s)) |
1032 rels.append(rel) |
1033 rels.append(rel) |
1033 if rels: |
1034 if rels: |
1034 obsolete.createmarkers(repo, rels, operation=operation, |
1035 obsolete.createmarkers(repo, rels, operation=operation, |
1035 metadata=metadata) |
1036 metadata=metadata) |
|
1037 elif phases.supportinternal(repo) and mayusearchived: |
|
1038 # this assume we do not have "unstable" nodes above the cleaned ones |
|
1039 allreplaced = set() |
|
1040 for ns in replacements.keys(): |
|
1041 allreplaced.update(ns) |
|
1042 if backup: |
|
1043 from . import repair # avoid import cycle |
|
1044 node = min(allreplaced, key=repo.changelog.rev) |
|
1045 repair.backupbundle(repo, allreplaced, allreplaced, node, |
|
1046 operation) |
|
1047 phases.retractboundary(repo, tr, phases.archived, allreplaced) |
1036 else: |
1048 else: |
1037 from . import repair # avoid import cycle |
1049 from . import repair # avoid import cycle |
1038 tostrip = list(n for ns in replacements for n in ns) |
1050 tostrip = list(n for ns in replacements for n in ns) |
1039 if tostrip: |
1051 if tostrip: |
1040 repair.delayedstrip(repo.ui, repo, tostrip, operation, |
1052 repair.delayedstrip(repo.ui, repo, tostrip, operation, |