https://bz.mercurial-scm.org/show_bug.cgi?id=5484

            Bug ID: 5484
           Summary: "hg debugupgraderepo" misses some optimizations on
                    already-generaldelta repos
           Product: Mercurial
           Version: 4.1
          Hardware: All
                OS: All
            Status: UNCONFIRMED
          Severity: feature
          Priority: wish
         Component: Mercurial
          Assignee: bugzi...@mercurial-scm.org
          Reporter: gabor.stefa...@nng.com
                CC: mercurial-de...@selenic.com

With the PoC fix for bug 5480, if I call "debugupgraderepo" on a fresh
generaldelta clone of our heavily-affected main repo, the manifest.d file
compresses down to 57MB (down from 1.3GB).

If I instead make that fresh clone non-generaldelta (using
format.generaldelta=0, format.usegeneraldelta=0), and then run
"debugupgraderepo" with the same settings, the manifest.d file goes down to
31MB.

Looks like there is some extra optimization done when converting from
non-generaldelta to generaldelta, which is not available when
upgrading/optimizing an existing generaldelta repo.

The debugupgraderepo command line I used was:
hg --config extensions.deltafix=C:\nngutilsm\hgext\deltafix.py --config
format.aggressivemergedeltas=1 debugupgraderepo --optimize redeltaparent --run

(deltafix.py is the PoC fix for bug 5480, packaged as an extension)

This same command yields a smaller manifest when upgrading the non-generaldelta
clone than when optimizing the already-generaldelta clone.

My guess is that this has to do with delta reordering when a non-generaldelta
revlog is cloned with format.generaldelta=1. We should be able to do the same
for already-generaldelta revlogs either automatically when --optimize
redeltaparent is set, or with a new --optimize reorderdeltas option.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel

Reply via email to