changeset 33251:a5cb2e4460de

transaction: track new obsmarkers in the 'changes' mapping The obsstore collaborate with transaction to make sure we track all the obsmarkers added during a transaction. This will be useful for various usages: hooks, caches, better output, etc. This is the seconds kind of data added to tr.changes (first one was added revisions)
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Tue, 27 Jun 2017 02:45:09 +0200
parents bbc57a7e8823
children 53b3a1968aa6
files mercurial/localrepo.py mercurial/obsolete.py
diffstat 2 files changed, 4 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/localrepo.py	Fri Jun 30 03:44:04 2017 +0200
+++ b/mercurial/localrepo.py	Tue Jun 27 02:45:09 2017 +0200
@@ -1083,6 +1083,7 @@
                                      validator=validate,
                                      releasefn=releasefn)
         tr.changes['revs'] = set()
+        tr.changes['obsmarkers'] = set()
 
         tr.hookargs['txnid'] = txnid
         # note: writing the fncache only during finalize mean that the file is
--- a/mercurial/obsolete.py	Fri Jun 30 03:44:04 2017 +0200
+++ b/mercurial/obsolete.py	Tue Jun 27 02:45:09 2017 +0200
@@ -613,6 +613,9 @@
                 # XXX: f.close() == filecache invalidation == obsstore rebuilt.
                 # call 'filecacheentry.refresh()'  here
                 f.close()
+            addedmarkers = transaction.changes.get('obsmarkers')
+            if addedmarkers is not None:
+                addedmarkers.update(new)
             self._addmarkers(new)
             # new marker *may* have changed several set. invalidate the cache.
             self.caches.clear()