Accessing the ERTOS Version Control Repository

ERTOS uses a GNU Arch version control repository to coordinate our development. The main repository is public, so you can keep pace with development as it is done by checking out our tree.

The public repository is called ertos@nicta.com.au--public.

It is available at http://ertos.nicta.com.au/arch/public/

To use this archive, you need to install a GNU Arch client, such as baz (Bazaar 1, not Bazaar 2, which is bzr) from bazaar.canonical.com. We recommend the baz implementation of GNU Arch, as it is faster and implements more useful features. The example commands here will be for baz. Expect the required tla commands to be similar but sometimes different.

Firstly, register our archive with:
baz register-archive http://www.ertos.nicta.com.au/arch/public/

You should see a message saying that ertos@nicta.com.au--public is now registered. If you run baz archives the location of the ertos repository should be indicated.

You can now get the latest committed version of, say, the build-tools package, with:
baz get ertos@nicta.com.au--public/build-tools--devel

To get the latest public release of the iguana-project, use:
baz get ertos@nicta.com.au--public/iguana-project--devel
However, this will not download all of the files for the iguana project. This step downloads the base packages, which contains certain top level objects such as the top level build system, and also a list of packages. This allows the iguana project to use the same packages as are in development in other projects at the same time. To populate the tree with the other packages, enter the iguana-project directory and use:
baz build-config packages

You should now have the same files available as you would had you retreived the tarball. The following sections will assist you in making use of other features of arch.

User setup

If you ever want to use baz to check anything in, make sure you've set your id, essentially your email address, e.g.:
baz my-id Bruce Wayne <bruce@wayne-enterprises.com>

Revision Libraries

By default these pristine copies are stored with each checkout. If you have lots of checkouts this can be quite wasteful. To avoid this GNU arch has revision libraries. A revision library will store pristine copies that will be shared between multiple checkouts.
To setup a revision you should do something like:

$ mkdir ~/arch.library
$ baz my-revision-library ~/arch.library
$ baz library-config --greedy --non-sparse ~/arch.library
* library /home/you/arch.library
greedy? yes
sparse? no
$

Setting a library as greedy means GNU arch will automatically add new version to the revision library. (Otherwise you would need to explicitly add version, which isn't so useful.) The sparse option means that it will only download the requested version. (By default it will download all versions up to the requested version. This isn't as bad as you might think because hard links are used to compress the directories.)

Tracking Updates

In most cases, you can stay abreast of updates happening on the archive with a simple baz update.

However, the projects which consist of multiple packages are not so straightforward to update. A shell script is supplied in the build-tools package called tla_config.sh. It was originally designed to support tla, so, to use baz:

export TLA=baz

The effect of tla_config is to run a tla/baz command in every package in the project, so for instance to run baz update in every one of the packages listed in the 'packages' file do:

tools/tla_config.sh packages update
Sometimes packages are migrated, in which case tla_config will report a switch needs to be run. To have the switch run automatically, do:

export BAZ_ALWAYS_UPDATE=yes