Hello everybody,

as you know, right after the 3.5.0 release, CPS development has switched
from Subversion to Mercurial. Around that time also started the
development of an utility to replace bundleman (see
http://public.dev.nuxeo.com/~ben/bundleman/).

This is called hgbundler, and its purpose is to help managing
automatically a bunch of independent mercurial repositories, which is
exactly what we got after the conversion process : since each CPS
product had its own trunk/tags/branches substructure in svn, the most
natural conversion was to make a mercurial repository of each product.
This goes well with the tradition of having independent version numbers
for each of them.

In the Subversion days, bundles of CPS products were created by means of
svn externals, a builtin Subversion feature. Bundleman used that
information to automatically perform releases of such bundles. The
release process involved releasing each product (version number
incrementation, tag,  management of changelogs), creating a tag bundle
pointing to all products tags and finally tarball creation, or re-creation.

Hgbundler replaces both the externals system and bundleman. In theory,
it can be used to manage and release together any bunch of mercurial
repositories, although the release part is less relevant if one can use
zc.buildout (or maven for the java crowd). The release features are
quite fresh, but working enough to have released CPS-3-full (not pushed,
that was a test) and a client project of mine this week. In other words,
the packaging preparatiom of CPS 3.5.1 is ready.

Since the long term perspective for CPS would certainly be end up using
zc.buildout (requires Zope 2.10), there are a few secondary bundleman
features that probably won't get implemented (e.g, automatic changelog
diff between bundle releases, md5sums).

how to get hgbundler:
$ hg clone https://hgcps.nuxeo.org/hgutils
$ less hgutils/INSTALL.txt # learn about dependencies and install procedure

User prerequisites : you have to understand mercurial well, and also
what hgbundler actually does, which is nothing but automation of hg
calls. This is fully documented in the README.txt file. You really need
to read it ;-)

SOME EXAMPLES:

Here's how to get the CPS-3-full bundle from the Nuxeo server :

$ hg clone https://hgcps.nuxeo.org/bundles
$ cd bundles/CPS-3-full
$ hgbundler.py make-clones

As people reading trac tickets may have noticed, I don't push directly
on hgcps.nuxeo.org (the reference server), using instead
mercurial.racinet.org as an intermediate bleeding edge server. Here's
how to switch to that from the previously made bundle :

$ hg up racinet # changes the references to server URLs in the bundle itself
$ hgbundler.py clones-refresh-url # updates paths in .hg/hgrc
$ hgbundler.py make-clones # grap new repos if any
$ hgmap pull # grab changesets
$ cd .hgbundler; hgmap pull; cd .. # again for repos from which only a
subdirectory is part of the bundle
$ hgbundler.py update-clones # update all the repos to head of correct
branch

Here's now for instance how to switch to the unicode branch that's
available on this server:

$ hg up unicode
$ less BUNDLE_MANIFEST.xml # time to be curious
$ hgbundler.py update-clones # update all repos to the unicode branch

More about this branch later… In the meanwhile, comments are very
welcomed, as usual

Cheers,

-- 

Georges Racinet, http://www.racinet.fr
Zope/CPS/Plone expertise, assistance & development
GPG: 0x4862FFF7


Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
cps-devel mailing list
http://lists.nuxeo.com/mailman/listinfo/cps-devel

Reply via email to