how to make automatic git mirror for hg repo

2

1

I've Vim plugin project on GoogleCode using Mercurial, but users wants to have it on github to ease use it as git subrepo (to keep their ~/.vim/ on github with all plugins inside).

Personally I prefer googlecode and hg over github and git, so I don't like to move my project to github, and prefer to implement sort of automatic git mirror for my hg repo. I've read these: Hg-Git mercurial plugin, Synchronizing a git mirror with hg-git and Create a Git Mirror and looks like with some extra headache this may work by using two commands in place of one:

hg push
hg push githubmirror

But, thing is, you know, most of us will forget to run second hg push from time to time. So, is it possible to automate this in some way (using hooks etc.)?

Another question - is there better way to make such mirrors? Maybe GoogleCode already provide git access to their hg repos? Or maybe it's possible to create git clone for hg repo and keep it in sync with original hg repo automatically by 3rd-party, without even notifying hg repo owner?

Powerman

Posted 2012-01-28T12:19:51.763

Reputation: 173

create a script with both, save it and run it when you need to sync? – Journeyman Geek – 2012-01-28T12:30:22.760

I've a lot of repos, and having to run custom script for some of them in no way better than having to run second hg push: it's change my workflow and thus will result in errors. – Powerman – 2012-01-28T12:40:32.680

Answers

1

You could do something like a post-commit hook. Have a look at http://www.selenic.com/mercurial/hgrc.5.html

hooks

Commands or Python functions that get automatically executed by various actions such as starting or finishing a commit. Multiple hooks can be run for the same action by appending a suffix to the action. Overriding a site-wide hook can be done by changing its value or setting it to an empty string. Hooks can be prioritized by adding a prefix of priority to the hook name on a new line and setting the priority. The default priority is 0 if not specified.

Karolos

Posted 2012-01-28T12:19:51.763

Reputation: 2 304

2Using post-commit is bad idea becaise commit!=push. Using post-push also bad idea because 'post-push=hg push git' result in endless loop. But looks like 'outgoing' hook works ok. – Powerman – 2012-05-10T17:47:06.813

1

@Powerman You can write a more complex hook which checks for the remote target, see http://hgbook.red-bean.com/read/handling-repository-events-with-hooks.html, section Where changes are going—remote repository URLs.

– schlamar – 2013-09-04T10:35:07.703

@schlamar What's wrong with 'outgoing' hook? Why I should need more complex hooks to solve this issue? – Powerman – 2013-09-04T23:34:40.800