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

Jun Wu quark at fb.com
Wed May 3 04:20:22 EDT 2017


Other than the O(1) revs question, the series is a clear improvement to me.

Excerpts from Pierre-Yves David's message of 2017-05-03 01:43:38 +0200:
> # 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