Type:Mercurial Extension
Status: Draft
Author: André Felipe Dias <andref.dias at gmail dot com>


Both technical suggestions and grammar corrections are welcome!


The hg-ibranch is an extension that provides an ideal branching model to Mercurial. Basically, it combines named branches and bookmarks behaviors into a single one. The ibranch can be used to long and short-term branches, providing speed, flexibility and audit trail.

There is no schema change. So, backward compatibility is granted.


Currently, Mercurial has two different branching models: named branches and bookmarks. Bookmarks are used for short-term feature or topic branches whereas named branches are used for long-term branches.

Bookmarks are fast and flexible. They are scalable and can be easily renamed and deleted. But they don't record an audit trail and this is the main reason why they aren't used in long-term branches.

On the other hand, Named Branches creates an audit trail, but they cannot be renamed or deleted (only closed). There is also a performance penalty as the number of named branches increases. Thus, Named Branches are recommended for long-term branches only.

Although bookmarks and named branches can coexist, they aren't really integrated. There are different sets of commands, options and synchronization policies that turns their use awkward and unnecessarily complex. A developer need to know too much detail to choose and operate both models simultaneously.


The original hg branch command is replaced by a new one with the following options:

use "hg -v help branch" to show more info