Mercurial > hg-stable
changeset 33511:9689239d7c2b
bookmark: use 'divergent2delete' in 'scmutil.cleanupnode'
author | Boris Feld <boris.feld@octobus.net> |
---|---|
date | Mon, 10 Jul 2017 19:10:13 +0200 |
parents | 07b556d1b74e |
children | 1424a769f31b |
files | mercurial/scmutil.py |
diffstat | 1 files changed, 7 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/scmutil.py Mon Jul 10 19:08:17 2017 +0200 +++ b/mercurial/scmutil.py Mon Jul 10 19:10:13 2017 +0200 @@ -591,14 +591,13 @@ with repo.transaction('cleanup') as tr: # Move bookmarks bmarks = repo._bookmarks - bmarkchanged = False + bmarkchanges = [] allnewnodes = [n for ns in mapping.values() for n in ns] for oldnode, newnodes in mapping.items(): oldbmarks = repo.nodebookmarks(oldnode) if not oldbmarks: continue from . import bookmarks # avoid import cycle - bmarkchanged = True if len(newnodes) > 1: # usually a split, take the one with biggest rev number newnode = next(repo.set('max(%ln)', newnodes)).node() @@ -619,10 +618,12 @@ allnewnodes, newnode, oldnode) deletenodes = _containsnode(repo, deleterevs) for name in oldbmarks: - bmarks[name] = newnode - bookmarks.deletedivergent(repo, deletenodes, name) - if bmarkchanged: - bmarks.recordchange(tr) + bmarkchanges.append((name, newnode)) + for b in bookmarks.divergent2delete(repo, deletenodes, name): + bmarkchanges.append((b, None)) + + if bmarkchanges: + bmarks.applychanges(repo, tr, bmarkchanges) # Obsolete or strip nodes if obsolete.isenabled(repo, obsolete.createmarkersopt):