Git puente a Mercurial

Trabajo principalmente con Git y tengo un montón de código en github. También me gustaría tenerlo en Bitbucket, para personas que usan mercurial, pero lo más importante es que también quiero tener el código en mi domian, y BItbucket admite Cnames para el código alojado.

Entonces, ¿hay alguna manera de que pueda trabajar principalmente con Git, pero también ser capaz de presionar a HG?

Github creó un proyecto en otra dirección, (para HG repos a git), pero hay uno para la dirección que estoy buscando.

Si solo hace un espejo de los repositorys de Git, puede configurar un trabajo cron para ejecutar el siguiente script:

#!/bin/bash USER=bitbucketuser ERROR_FILE=clone_update_err CLONES=/path/to/clones cd $CLONES if [ $# -ne 1 ]; then for DIR in *; do if [ -d $DIR ]; then ./update.sh $DIR 2> $ERROR_FILE if [ -s $ERROR_FILE ]; then echo $DIR >&2 cat -n $ERROR_FILE >&2 fi fi done else DIR=$1 echo $DIR cd $DIR if [ -a source ]; then cd source if [ -d .hg ]; then hg pull elif [ -d .git ]; then git pull elif [ -d .bzr ]; then bzr pull elif [ -d .svn ]; then svn up else echo "$DIR is not a known repository type." return 1 fi cd .. hg convert source hg URL=ssh://hg@bitbucket.org/$USER/$DIR/ cd hg hg pull $URL hg push $URL # You can add -f here if you don't mind multiple heads cd .. else # hg dir or hg-git cd hg hg pull hg push $URL cd .. fi cd .. sleep 5 fi 

Esto supone que tiene una key SSH instalada. Como puede ver, también reflejará otros VCS. Asume una estructura de directorys como esta:

 clones/ project1/ source/ # Original Git/Bazaar/SVN/Mercurial repo hg/ # Mercurial repo 

Obviamente, esto es unidireccional, pero si haces todo tu trabajo en Git, entonces no importará.

Iba a agregar esto a mi otra respuesta, pero se alargó un poco, así que lo haremos como una respuesta separada.

Si quieres ir en ambas direcciones, puedes usar hg-git para get una versión de hg del repository en tu máquina. Todavía puede hacer todo su trabajo en Git, solo significa que usará GitHub como su intermediario.

 $ cd src # do some work # push to GitHub $ cd ../hg $ hg pull $ hg push bitbucket 

Sin embargo, tiene la ventaja de que si desea get cambios de un usuario de Mercurial, puede includelos en el repository de hg y enviarlos a GitHub.

 $ cd hg $ hg pull someotherrepo # Probably merge $ hg push # Changes go to GitHub $ cd ../src $ git pull # Continue working in Git