incubator-ooo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael Stahl <>
Subject Re: Building a single Hg repository (was: An svn question)
Date Wed, 29 Jun 2011 09:04:32 GMT
On 29.06.2011 05:27, Greg Stein wrote:
> On Mon, Jun 27, 2011 at 05:42, Jens-Heiner Rechtien<>  wrote:
>> On 06/27/2011 01:08 AM, Greg Stein wrote:
>> ...
>> The anonymous heads could be marked with the cws name as a mercurial
>> bookmark, just after the individual pull step. That way the information is
>> at least already in the all-in-one hg repository. A smart converter could
>> use them to generate svn branch names. Something along this lines:
>> $ cd<all-in-one-respository>
>> $ hg pull ../cws/os151
>> ... the latest changeset of CWS os151 is now tip
>> $ hg bookmark -r tip os151
>> $ hg bookmarks
>>    os151                     276718:f4d674e63830
>>    ....
> Great. Thanks for the pointers.
> I'm going to start updating the (see tools/dev/) with
> this stuff. I'd appreciate if you could keep an eye on the commits and
> correct me where I stray. I've never used Mercurial before.
> I've read up on the difference between: tags, branches, local tags,
> and bookmarks. I agree that it seems bookmarks are appropriate for
> this purpose. We could technically use a tag since no further work
> would be done in this "single" repository. However, we may be able to
> use the bookmarks as an indicator for branch construction (vs a static
> copy in tags/).
> I suspect that a lot of work will happen on the Convert extension to
> Mercurial to manage this transition :-)
> One more thing... I cloned one of the CWSs (ab78), and it was 2.8 Gb.
> My clone of DEV300 is 3.5 Gb. Is the size of that CWS typical? There
> are about 250 CWSs hosted at OOo. If the average holds, I would need
> to clone 700 Gb of material down to my system to perform the
> integration.

i guess your DEV300 includes a working copy, and ab78 does not?
"du" says 2.4 GB for .hg on ext3 filesystem here.

> Am I missing something? Is there a better way? etc.

you're doing it wrong :)

in principle the size of a CWS is on the same order as the master, 
because it's just another HG repository.

but HG supports hardlinks between repositories (in newer versions even 
on win32), so you can "hg clone" the master on the same filesystem and 
then pull in the CWS, and it will be _much_ faster and take _much_ less 
additional space (in fact, less than the useful-only-for-diff "pristine 
source" in a SVN working copy would take).

there is an extension written by my former colleague Bjoern Michaelsen 
that can mirror all the CWSes automatically:

IIRC all CWSes that actually include changesets not in the master take 
less than 100GB.
only issue is that Branchmirror does not check "hg incoming" before 
cloning for a CWS, so you end up with some useless repos identical to 

i'll attach the .hgrc i used; it excludes a lot of CWSes that are marked 
as "integrated" or "deleted" in EIS (which is a database and a web UI to 
manage CWS metadata); these are also automatically deleted on the HG 
server after some time.

oh, just noticed it doesn't include all the l10n repositories.
i think we need those as well.
with Branchmirror probably a second config file is required, because 
l10n is a separate master repo.
(since DEV300m101 a master/CWS consists of 2 repositories, one for all 
the bulky translations, one for the stuff i work on :)

of course cloning all the CWSes individually is different from what 
Heiner suggested above, but i think it's useful as a backup, and you can 
experiment much better if you have this as an intermediate step and 
don't have to download everything again.

my totally unsubstantiated guess is that one HG repo with all CWSes 
pulled in would be ~3 GB.


 From the Plan 9 FAQ:
Q: Where did the name come from?
A: It was chosen in the Bell Labs tradition of selecting
    names that make marketeers wince.

View raw message