1. Henrik Stuart
  2. repoman


Clone wiki

repoman / Home

Note: This page is under construction, while the content here is accurate, it is not complete yet.

Repository Manager (repoman)

Repoman is a forest extension that tracks the tip of named branches in different modules. See Glossary for details on names. It works as a wrapper around Mercurial to generalise Mercurial commands across modules.

Inline help

All commands are equipped with help text, which, like Mercurial, can be accessed using repo help. If something isn't adequately explained here, do check the built-in help system.

Creating a forest

To create a new forest, invoke repo init. This creates an empty forest.

To add a new module, use repo modadd modulename for some value of modulename. The module being added should not be present in the file system before.

To configure solutions, create the folder solutions inside the .root module (this module is automatically created by repo init and contains the global metadata). Inside this directory, create a file corresponding to your solution's name, say, A. Inside A, write the different modules that A spans with one module per line (the file should be in UTF-8). There is currently no command support for setting up solutions.

Cloning a forest

There are two types of forests to clone: module forests and solution forests.

A module forest is cloned using:

repo clone http://remote/forest --module {name} --module {name2} --branch {branch} --branch {branch2}

and a solution forest is cloned using:

repo clone http://remote/forest --solution {solution} --branch {branch} --branch {branch2}

Each module will be cloned separately, including the .root and .repo metadata modules.

Fetching changes

To check if there are any incoming changes to the modules in your forest you can use

repo incoming

and to actually fetch changes, you can use

repo pull

Unlike Mercurial, incoming and pull will only work on your current branch, unless you specify --branch *, and pull will automatically update to the latest change on the branch being pulled in. This means that conflicts may trigger a merge as part of the pull. To avoid this, you can specify --noupdate to the pull command.

About repoman

Repoman is developed by Edlund A/S.