On 29.06.2011 05:27, Greg Stein wrote:
On Mon, Jun 27, 2011 at 05:42, Jens-Heiner Rechtien<[email protected]>  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 single-hg.sh (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:

http://mercurial.selenic.com/wiki/BranchmirrorExtension

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 master.

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.

regards,
 michael

--
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.
[extensions]
hgext.branchmirror=~/Download/branchmirror

[branchmirror]
#baseurl of the remote hosting site
remoteurl=http://hg.services.openoffice.org

# the reference repository from which all the feature branches originate
master=DEV300

# a sourceurl from which to initialize the master repository
initsource=bundle:///home/ooo/DEV300.hg

# remote repositories matching this expression will get mirrored (for example: 
^cws/fwk.*$ or ^cws/cmcfixes.*$)
branchpattern=^cws/.*$

# remote repositories matching this expression will not get mirrored, even if 
matching the branchpattern above.
branchignorepattern=^cws/(ab80|ab81|accfixes|ause127|automationcheckissuesids|automationdev300m100|automationdev300m99|bserver54|calc66|calcvba|chart51|chart51b|chart53|chart55|coc05|csvexport|dba34c|dba34d|debuglevels|dr78|dr79|ext006|extras340|fwk165|fwk166|fwk167|gnu_make|gnumakefixes|gridsort|impress195|impress209|jl164|jl165|jsc340|ka102|kso49|kso51|l10n36|l10ndev300m100|l10ndev300m101|l10ndev300m102|l10ndev300m99|l10nmove|l10nmovetest|l10nmovetest3|locales34|mav60|mhu21|mongolianlayout|native316|native352|native359|native360|native361|native363|native364|native367|native369|nostalgic34|obo55|obo56|odockwin|ooo340libs|os146|os150|os151|readmechanges34|rsvglibs|rt40|sb138|sb141|sb142|socs25|solaris11|sw34bf03|sw34bf04|sw34bf05|swlayoutrefactoring|test123l10n02|test123l10n03|test123l10n04|test123l10n05|tkr38|vcl118|vcl119|vcl120|vcl121|vcl2gnumake|xmlfix3)$

# these didn't include any changesets not in DEV300 last time i tried:
# 
|XXXemptyneedcheckXXX|ab82|adc27|aquaflip01|ause114|ause118|ause122|automationooo330stablefixes|bcfixes|chart57|chart59|cs2cuoffilter|foo42|fwk169|gozer1|hctreel10n|hr63|impress203|impress213|jl167|ka101|keyid340|l10ndev300m103|l10ndev300m104|l10ndev300m105|l10ndev300m93|l10ndev300m94|l10ndev300m95|l10ndev300m96|l10ngh1|l10nmove2|mh321|mhu24|mib23|monobridge|native345|native365|native368|native370|native371|np001|npower15|odfp34|oj21|ooocon2010|ooxml04|ooxml05|oracleirm02|oracleirm03|os141|os2port08|osxct01|parastylelistlevel|parastylelistlevel02|pmladek09|rangeattr|renaissance3|renaissance4|renaissance5|sbclean|sg421|slideshow2|slideshow3|splitview|ssp1|surfacechart|svtools.rework|test123l10n06|test85|vgbugs14|winbuildenv01|zhangxiaofei01

Reply via email to