CPS on Mercurial and hgbundler

Georges Racinet <[email protected]> Thu, 18 Mar 2010 13:26:07 +0100
Newsgroups gmane.comp.web.zope.cps.devel
Message-ID <[email protected]>
This is an OpenPGP/MIME signed message (RFC 2440 and 3156)
--===============1559738998==
Content-Type: multipart/signed; micalg=pgp-sha1;
 protocol="application/pgp-signature";
 boundary="------------enig0666039CBD3C4AAB57B03A06"

This is an OpenPGP/MIME signed message (RFC 2440 and 3156)
--------------enig0666039CBD3C4AAB57B03A06
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

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-creatio=
n.

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 procedu=
re

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 its=
elf
$ 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=E2=80=A6 In the meanwhile, comments are very=

welcomed, as usual

Cheers,

--=20

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



--------------enig0666039CBD3C4AAB57B03A06
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJLohvnAAoJEOAffZJiF+Z4cFAH/R7UjGZ9HrF4fheHxEF5Oj2b
DQxYdFKzHaUD10IvAE0efhXglgEN3jAnJaOsQGkq3JLj3BqnvnB29h90V83/HFGh
Qb0YvGNyO0XRjWBrA6ijrFlKjO6o5w8O8LsLCaq6ZsU18s3nsMhyg5RAU3vTtm8S
0uL+hshH6womka4Vf8l0yAIflyoLX+WJhE2ha4x89u75vuQXWzidtGCiYEtUCLb2
kSL/omfABYdTxt09SV3jgnI5JEYqb+0vjISU09CL32z4SPG8GInB5qjPSpsl+Ijq
4HhFpJkcXlVD8iwAoXoHC1ykb895DJJIvHr9ChWtmdU6aU2oSMU9iPfK5fdVW6Q=
=SRCX
-----END PGP SIGNATURE-----

--------------enig0666039CBD3C4AAB57B03A06--

--===============1559738998==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

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

--===============1559738998==--