[PATCH 1 of 2 STABLE] annotate: reuse already calculated annotation

FUJIWARA Katsunori foozy at lares.dti.ne.jp
Fri Mar 29 08:44:19 CDT 2013


At Thu, 28 Mar 2013 10:35:46 -0500,
Kevin Bullock wrote:
> 
> On 28 Mar 2013, at 5:36 AM, FUJIWARA Katsunori wrote:
> 
> > # HG changeset patch
> > # User FUJIWARA Katsunori <foozy at lares.dti.ne.jp>
> > # Date 1364464124 -32400
> > # Branch stable
> > # Node ID 53691948fe037f64fe97d4eb7fad76ebda4edf6a
> > # Parent  43dfb6fce6a76168766f3b73f4c991ab811590ec
> > annotate: reuse already calculated annotation
> > 
> > Before this patch, annotation is re-calculated even if it is already
> > calculated. This may cause unexpected annotation, because already
> > cleared "pcache" ("pcache[f] = []") prevents from scanning ancestors.
> > 
> > This patch reuses already calculated annotation if it is available.
> > 
> > In fact, "reusable" situation should be seen only on legacy
> > repositories which include the merging between the revision and its
> > ancestor, because:
> > 
> >  - tree is scanned in depth-first
> > 
> >    without such merging, annotation result should be released soon
> > 
> >  - recent Mercurial doesn't allow such merging
> 
> ...except that we _do_ allow it if the ancestor is on a different
> named branch.

Thank you for your suggestino, Kevin.

As you described, we can merge the revision and its ancestor, if the
ancestor is on a different named branch.

But to reproduce issue3841:

  - the ancestor should be the second parent of merging revision

    such merging is aborted as "merging with a working directory
    ancestor no effect" in mercurial/merge.py

  - filelog should include such merging

    merging across named branch causes creation of such merging in
    changelog and manifest, but never in filelogs.

    in "localrepository._filecommit()", second parent is ignored just
    before creating new entry into filelog, if one of parents is an
    ancestor of the other:


I'll re-post patch series which also describes above detail.

----------------------------------------------------------------------
[FUJIWARA Katsunori]                             foozy at lares.dti.ne.jp


More information about the Mercurial-devel mailing list