Search code examples
mercurialexport

Mercurial: Recommended way of sending a whole repository to someone


I have done some programming and I have used Mercurial for source control. I now need to send all of my code to someone else (because they are going to take over).

Since all copies of a mercurial repository is a full and real repository my first thought is to first do a clone of my repository without an update and then zipping and emailing that clone. Is this a good way, or is there a better way?

For example when using the TortoiseHg Repository Explorer I can right-click on a changeset and under Export there are various options that looks like they could be doing something interesting, but I don't quite understand them or know which one to use.


Solution

  • What you've suggested will work fine, but you can also use hg bundle to create a changegroup file encapsulating a compressed copy of the entire repository (see hg help bundle for the full details, or this page: http://www.selenic.com/mercurial/hg.1.html#bundle).

    On your machine:

    hg -R /path/to/repo bundle --all my_repo.hg
    

    Then send my_repo.hg off to the other developer, who can clone directly from that:

    hg clone my_repo.hg /path/to/new/clone
    

    (Note: this sort of assumes you're working with linux, but I imagine TortoiseHg supports something similar, since this is a basic feature of Mercurial).

    EDIT: Looks like the equivalent using TortoiseHg would be to export a range of changesets as a bundle (see here: http://tortoisehg.bitbucket.io/manual/2.9/patches.html#export-patches). In this case, you want to select the very first changeset all the way up through the tip, and export as a bundle.