[issue1716] manifest file gets (very) large with frequent branch jumps
Greg Ward
mercurial-bugs at selenic.com
Wed Jul 1 01:24:25 UTC 2009
New submission from Greg Ward <greg-hg at gerg.ca>:
Certain workflows appear to have a high space penalty with Mercurial. In
particular, if usage is characterized by frequently switching from branch to
branch, the manifest file can get very large. This is most obvious when
converting with the --datesort option from a legacy VCS with many branches and
concurrent activity on multiple branches.
For example, if the association between revision numbers and branches looks like
this:
[...]
1000 default
1001 default
1002 v1.0
1003 v1.1
1004 default
1005 v1.1
1006 default
1007 v1.1
1008 v1.2
1009 default
[...]
then I think the manifest file will be much larger than it would be if you stuck
to one branch for a while and switched branches less frequently.
For example, at work I'm converting a 9-year CVS history with ~26,000 files and
~100,000 commits. Using 'convert --datesort', I get a ~4.6 GB manifest file;
without --datesort (ie. using the default toposort algorithm), it comes out ~130
MB (if memory serves). That's something like a 40x penalty for accurately
reflecting the chronology of our CVS history. And with DVCS, space penalty ==
time penalty, at least for cloning. (And for the first commit in a new
hard-link clone. Dunno where else such a huge manifest will affect performance.)
This wouldn't be a huge concern if it only applied to converted repos. But
would it also affect a frequent-branch-switch workflow that used Mercurial from
day one? I see no reason why it wouldn't.
----------
messages: 9831
nosy: gward
priority: bug
status: unread
title: manifest file gets (very) large with frequent branch jumps
topic: performance
____________________________________________________
Mercurial issue tracker <mercurial-bugs at selenic.com>
<http://mercurial.selenic.com/bts/issue1716>
____________________________________________________
More information about the Mercurial-devel
mailing list