Hg-publishall is a mercurial extension which allows you to push simultaneously to multiple repositories, in a single command.


First, clone the repository, let's say in your home directory:

hg clone ssh:// ~/hg-publishall

Then add the following to your .hgrc file in order to activate the extension:

publishall = /Users/thomas/hg-publishall/

And voilà!


Add as many paths as you want to your repository/.hg/hgrc file, and when you want to push, use one of the following:

hg pushall
hg pusha


As of r10 you can now pass --new-branch to the command in order to create remote branches. Here is an example session:

hg init base
hg init target1
hg init target2
echo -e "[paths]\ntarget1=../target1\ntarget2=../target2" > base/.hg/hgrc
cd base
touch bar
hg commit -A -m "first commit on default"
hg pushall
hg branch newbranch
touch foo
hg commit -A -m "create a new branch"
hg pushall # This fails
hg pushall --new-branch


  • Hg-publish plays great with hg-git.

Get involved

Hg-publishall is licensed under MIT license, so feel free to hack as much as you wish.

The official repository is on Bitbucket, but a mirror is available on GitHub.

Finally, if you find a bug, have a feature request or want to submit a patch, just fill a ticket on the issues tracker.


In order of appearance,