D6183: copies: add config option for writing copy metadata to file and/or changset
martinvonz (Martin von Zweigbergk)
phabricator at mercurial-scm.org
Mon Apr 8 11:43:51 EDT 2019
martinvonz added a comment.
In https://phab.mercurial-scm.org/D6183#90327, @martinvonz wrote:
> In https://phab.mercurial-scm.org/D6183#90300, @marmoute wrote:
> > I am quite enthousiastic for a non-filelog based copy tracing using commit level information. However, I am very unenthousiastic at the idea of storing more copy data in the changeset itself. The "files" field in the changelog is already quite problematic (about 95% for changelog.d file, taking possibily hundred of megabytes).
> It seems like it should save a similar amount of data from the filelog, so what's your concern? That things that need to scan the changelog will need to read more data from disk? Most commits don't have copy information, so I'm not too worried about this. Feel free to experiment on a large repo and insert copy information in changesets there and see how much larger changelog.d becomes. (I was planning to do that later for performance testing.)
It took a few days to convert (an old version of) the mozilla-unified repo. I converted it once with copies in changeset and once with copies in filelogs (to remove any influence from different delta base selection in new versions of hg). Here's the result:
size | in filelog | in changeset | increase |
.hg/store/00changelog.d | 127067298 | 128173208 | 0.87% |
.hg/ | 2866813806 | 2804688010 | -2.17% |
The performance impact is terrible, however. `hg st --rev last-mozilla-central --rev GECKO_2_1_BASE` (~30k commits apart) went from about 5 seconds to about 6 minutes. That's because the current code reads manifests. We should be able to remove that.
To: martinvonz, #hg-reviewers
Cc: gracinet, marmoute, mercurial-devel
More information about the Mercurial-devel