Analysis of issue 1327

Greg Ward greg-hg at gerg.ca
Fri Nov 6 10:38:21 CST 2009


On Fri, Nov 6, 2009 at 11:07 AM, Sune Foldager <cryo at cyanite.org> wrote:
> This mail describes the issue of file revlogs not being a subgraph of
> the changelog, as well as it explores several solutions for rectifying,
> or mitigating, the problem. (The problem has been reported as issue1327
> in terms of merge being wrong, but this mail describes the root cause
> for it).

Thank you!  That was very illuminating.  I'm pretty sure this is the
root cause of issue1839 ("annotate ignores topology of changelog graph
(sometimes?)") too.

> 2. SOLUTIONS
>
> In general, there are two ways to address this: Fix the filelogs to be
> correct, or fix all the uses of the filelog.

Strong +1 on fixing the filelog, because that should fix other bugs
(e.g. 1839) for free.

> 2.1.2. INTRODUCING A NEW REVLOG SUB-FORMAT SUPPORTING METADATA AND SALT
>
> A better (with respect to design, prettyness and performance) approach
> is to change the revlog format slightly to support metadata in a native
> way. This can be done in the following way:

This sounds preferable to me.  Mercurial has made format changes in
the past to fix bugs, and adding generic metadata support to filelogs
sounds very sensible.

> 2.1.2. THE FUTURE: OTHER FORMATS
>
> This is a topic of much debate, I am sure, but I personally think that
> we should, on the long term, move towards a solution a bit like this:
>
> - A revlog containing the changelog and possibly manifest. No real
>  reason for the two levels, as I see it.

Interesting idea, but it shouldn't be done until we have parent
deltas.  Rationale: currently, lack of parent deltas can be worked
around by reordering the manifest file.  (In our case,
shrink-revlog.py shrinks the manifest from ~3 GB to ~50 MB, which
frankly makes the difference between choosing Mercurial or choosing
something else.)  But you can't reorder the changelog.  So merging
manifest + changelog means giant manifests can only be fixed by
implementing parent deltas.

Greg



More information about the Mercurial-devel mailing list