Strange changeset in kernel repo

Matt Mackall mpm at selenic.com
Tue Jun 28 02:10:00 UTC 2005


On Mon, Jun 27, 2005 at 08:25:56AM +0200, Thomas Arendsen Hein wrote:
> http://kernel.org/hg/?cmd=changelog&rev=31671
> 
> The changeset lists about 1400 files changed, but the diff only
> shows 8.

The diff is always relative to parent1. The other 1392 (and probably
more) files changed relative to parent2. It's just a matter of
perspective.

But the list of changed files _must_ contain the _union_ of files that
changed from parent1 or parent2 so that we can construct a list of
files to transfer for a pull.
 
> Besides this the changes[3] from show_changeset and my new
> implementation with diffrevs show a slightly different set of files,
> even if only looking at changed and added files, since changes[3]
> did not always include removed files.

I'm afraid diffrevs will always be much slower than using changes[3].
Uncompressing the manifest is very expensive, relatively speaking.
Reading all the changesets in the big repo takes just a few seconds.
Reading all the manifests could easily take hours.

The question then becomes, is there anything we can do to make reading
the manifest faster? At this point the answer is "not much". Early
on, I considered breaking the manifest down into directories like git.

This turns out to be a bad idea: the kernel has ~1600 directories
which means we could take -minutes- to read a single full manifest
cold cache (and this does happen with git).

-- 
Mathematics is the supreme nostalgia of our time.



More information about the Mercurial mailing list