[PATCH 1 of 8] transaction: introduce "changes" dictionary to precisely track updates

Pierre-Yves David pierre-yves.david at ens-lyon.org
Tue May 2 23:43:38 UTC 2017


# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at ens-lyon.org>
# Date 1493742678 -7200
#      Tue May 02 18:31:18 2017 +0200
# Branch stable
# Node ID 6697da7c4eab3fbe3588a2f91fa3f99b16f808ac
# Parent  fbb5f4bf94928b98fa87871e84bb2ef972ec2d51
# EXP-Topic obscache
# Available At https://www.mercurial-scm.org/repo/users/marmoute/mercurial/
#              hg pull https://www.mercurial-scm.org/repo/users/marmoute/mercurial/ -r 6697da7c4eab
transaction: introduce "changes" dictionary to precisely track updates

The transaction is already tracking some data intended for hooks (in
'hookargs'). However, that information is minimal as we optimise for
passing data to other processes through environment variables. There are
multiple places were we could use more complete and lower level
information locally (eg: cache update, better report of changes to
hooks, etc...).

For this purpose we introduces a 'changes' dictionary on the
transaction.  It is intended to track every changes happening to the
repository (eg: new revs, bookmarks move, phases move, obs-markers,
etc).

For now we just adds the 'changes' dictionary. We'll adds more tracking
and usages over time.

diff --git a/mercurial/transaction.py b/mercurial/transaction.py
--- a/mercurial/transaction.py
+++ b/mercurial/transaction.py
@@ -137,6 +137,10 @@ class transaction(object):
             releasefn = lambda tr, success: None
         self.releasefn = releasefn
 
+        # A dict dedicated to precisely tracking the changes introduced in the
+        # transaction.
+        self.changes = {}
+
         # a dict of arguments to be passed to hooks
         self.hookargs = {}
         self.file = opener.open(self.journal, "w")


More information about the Mercurial-devel mailing list