Patchwork [1,of,2] transaction: track new obsmarkers in the 'changes' mapping

login
register
mail settings
Submitter Pierre-Yves David
Date July 1, 2017, 11:03 p.m.
Message ID <7f2c9fb4ce2aa427e01c.1498950223@nodosa.octopoid.net>
Download mbox | patch
Permalink /patch/21862/
State Accepted
Headers show

Comments

Pierre-Yves David - July 1, 2017, 11:03 p.m.
# HG changeset patch
# User Pierre-Yves David <pierre-yves.david@octobus.net>
# Date 1498524309 -7200
#      Tue Jun 27 02:45:09 2017 +0200
# Node ID 7f2c9fb4ce2aa427e01ccf02641d218966b580d4
# Parent  6d678ab1b10d0fddc73003d21aa3c7ec43194e2e
# EXP-Topic tr.changes
# Available At https://www.mercurial-scm.org/repo/users/marmoute/mercurial/
#              hg pull https://www.mercurial-scm.org/repo/users/marmoute/mercurial/ -r 7f2c9fb4ce2a
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)

Patch

diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -1078,6 +1078,7 @@  class localrepository(object):
                                      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
diff --git a/mercurial/obsolete.py b/mercurial/obsolete.py
--- a/mercurial/obsolete.py
+++ b/mercurial/obsolete.py
@@ -613,6 +613,9 @@  class obsstore(object):
                 # 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()