Push to multiple remote repositories from a single local repo in Mercurial

I was considering using AppHarbor to host a lightweight website and was investigating their Mercurial integration.

Currently I use Kiln for my remote repositories, but currently AppHarbor only supports BitBucket integration.

  • deploying to AppHarbor using subversion
  • Integrating Assembla (or similars) with AppHarbor (or similars, like heroku)
  • How to get msysgit to clone a repository where I want it to go?
  • Using SubModules on AppHarbor
  • Teamcity and git repository, connection fails
  • Git add . is not adding the current folder to repo
  • Is it possible to have 2 remote repositories for a single local repository? So when I push commits from my local, they both get the push?

    I don’t ever want to pull from BitBucket, only push so that it can then be grabbed by AppHarbor and deployed.

  • Git: Why cloning MUST be done in a non-existing/empty directory?
  • Configuring egit with BitBucket
  • When working with AppHarbor, how can I properly manage development and live configuration files?
  • Composer not finding privately hosted package
  • Configure Jenkins to connect to BitBucket
  • Difference Between Bitbucket Service Hooks Post and Pull Request Post
  • 2 Solutions collect form web for “Push to multiple remote repositories from a single local repo in Mercurial”

    You can set multiple remote repository aliases in the [paths] section of the repository configuration file. This file is in .hg/hgrc, and you would add paths like this

    [paths]
    default = http://kilnhg.com/repo
    bitbucket = http://bitbucket.org/repo
    

    Then you would run hg push bitbucket to push to bitbucket and hg push to push to kiln, which is also the default here. The alias default is the one that’s used when you don’t specify anything else. This way push and pull with no arguments would use your preferred remote host, kiln.

    Sadly you can’t do a hg push * type command to push to all remote hosts at once, you have to specify each push destination one by one.

    I’m not sure if you can edit the hgrc file on Bitbucket/Kiln. If you can, you may be able to make this automatic. If not, you could push to another local copy, which then pushes to both Bitbucket and Kiln using Hooks. See this answer by Ton (included below for convenience):

    In your central server you create an
    changegroup hook.

    So your central server would have the
    following hgrc:

    [paths]
    server2=http://server2
    server3=http://server3
    [hooks]
    changegroup.server2 = hg push -f server2
    changegroup.server3 = hg push -f server3
    

    You can have multiple hooks for the
    same event, so that shouldn’t be an
    issue. The advantage of the
    changegroup hook over the changeset
    hook is that it is run far less often.

    Git Baby is a git and github fan, let's start git clone.