# HG changeset patch # User Boris Feld # Date 2017-07-10 15:01:34 # Node ID ef54789a947d8a4bc73894539ae45e19cb61c5f1 # Parent 8b48dad66be4d42aa8194fd3801f5c530ca8bb31 bookmark: introduce a 'applychanges' function to gather bookmark movement We want to track bookmark movement within a transaction. For this we need a more centralized way to update bookmarks. For this purpose we introduce a new 'applychanges' method that apply a list of changes encoded as '(name, node)'. We'll cover all bookmark updating code to this new method in later changesets and add bookmark move in the transaction when all will be migrated. diff --git a/mercurial/bookmarks.py b/mercurial/bookmarks.py --- a/mercurial/bookmarks.py +++ b/mercurial/bookmarks.py @@ -109,6 +109,16 @@ class bmstore(dict): self._clean = False return dict.__delitem__(self, key) + def applychanges(self, repo, tr, changes): + """Apply a list of changes to bookmarks + """ + for name, node in changes: + if node is None: + del self[name] + else: + self[name] = node + self.recordchange(tr) + def recordchange(self, tr): """record that bookmarks have been changed in a transaction