I faced a situation where I wanted to develop locally at home but still keep the sources available for myself on other hosts. For example, I am currently developing a TDD primer slideware and I have a simple example code base for a coding dojo that I wrote here at home. I want to be able to continue it at work too and then be able to sync it with my home laptop.

The problem is that I don’t want to run a Mercurial webserver at home (no proper hardware, just an old T42) or use any commercial service like bitbucket. I can’t run servers at work either due to firewalls and corporate policies.

But what I do have is a shell! And it does have Mercurial installed. So, off we go to setup a private code proxy that I can use as an intermediate storage for my work.

remote> ssh user@remote
remote> cd ~/my-repos/
remote> mkdir project
remote> cd project
remote> hg init
remote> exit
local> cd project
local> hg clone . ssh://user@remote/my-repos/project
searching for changes
remote: adding changesets
remote: adding manifests
remote: adding file changes
remote: added 6 changesets with 29 changes to 13 files

Just remember that clone assumes path relative to users home directory (that’s why there was so short path on the command).

After the first clone I have to manually run

hg update

on the remote to make it aware of the changes. Now I just edited the projects hgrc file on the remote to contain

changegroup = hg update

Now it updates itself when ever I push stuff into it again. That’s it, now I can easily setup and share with myself any repositories that contain source code I want access anywhere.

Post filed under software, Technology and tagged .


  1. Typo: please change [hook] to [hooks].

  2. Fixed. Thanks Martin!

Leave a Reply

Your email address will not be published. Required fields are marked *