[PATCH V2] transaction: allow running file generators after finalizers
FUJIWARA Katsunori
foozy at lares.dti.ne.jp
Tue Mar 29 05:14:42 EDT 2016
At Sat, 26 Mar 2016 22:15:50 -0700,
Pierre-Yves David wrote:
>
> On 03/20/2016 10:49 AM, Durham Goode wrote:
> > # HG changeset patch
> > # User Durham Goode <durham at fb.com>
> > # Date 1458495989 25200
> > # Sun Mar 20 10:46:29 2016 -0700
> > # Node ID 1431f0447a6b0be851f609b386fabf83b2f54666
> > # Parent ed75909c4c670a7d9db4a2bef9817a0d5f0b4d9c
> > transaction: allow running file generators after finalizers
[...]
> > […]
> > @@ -276,12 +284,17 @@ class transaction(object):
> > # but for bookmarks that are handled outside this mechanism.
> > self._filegenerators[genid] = (order, filenames, genfunc, location)
> >
> > - def _generatefiles(self, suffix=''):
> > + def _generatefiles(self, postfinalize=False, suffix=''):
>
> The postfinalize=False as the default is an issue here,
>
> Before this patch tr._generatefiles() would get all file generated.
> After that patch, only part of them are. Third parties and future
> callers are going to get this wrong and introduce various transaction
> bug. This is highlighted by the fact they had to be a special case when
> 'suffix' is passed.
>
> I think we need three values here: 'all', 'precl', 'postcl':
>
> def _generatefiles(self, suffix='', group='all')
If possible, wording without abbreviation is friendly to
non-English-native developer, like me :-)
If "preclose"/"postclose" is long, how about "closing"/"closed" ?
> This is a small change but I think this is a critical enough code that
> it deserved to be expurged from surprise.
>
>
> Also, we should try to avoid changing the position of arguments, this
> gratuitously break other callers.
>
> > # write files registered for generation
> > any = False
> > - for entry in sorted(self._filegenerators.values()):
> > + for id, entry in sorted(self._filegenerators.iteritems()):
> > any = True
> > order, filenames, genfunc, location = entry
> > +
> > + # for generation at closing, check if it's before or after finalize
> > + if not suffix and (id in postfinalizegenerators) != (postfinalize):
> > + continue
> > +
>
> [above, the suffix "hack" I was referring too]
>
> > […]
>
> Cheers,
>
> --
> Pierre-Yves David
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
----------------------------------------------------------------------
[FUJIWARA Katsunori] foozy at lares.dti.ne.jp
More information about the Mercurial-devel
mailing list