2011-02-10 22 views
85

estoy trabajando con repositorios Git de la siguiente manera:¿Cómo puedo agregar repositorios remotos en Mercurial?

  • que tienen el repositorio maestro y varios mandos a distancia en las diferentes máquinas de producción.
  • Estoy presionando el código de producción en los controles remotos y reinicio los servicios para que los cambios surtan efecto.

Estoy a punto de cambiar de Git a Mercurial y me gustaría saber cómo puedo lograr algo así.

Respuesta

116

Agregue entradas a la sección [paths] del archivo .hg/hgrc de su clon local. He aquí un ejemplo de una sección que iría en el archivo .hg/hgrc:

[paths] 
remote1 = http://path/to/remote1 
remote2 = http://path/to/remote2 

A continuación, puede utilizar comandos como hg push remote1 para enviar conjuntos de cambios a la cesión temporal. Si desea que el repositorio remoto para actualizar sea el directorio de trabajo, necesitará colocar un gancho changegroup en esa ubicación remota que realiza una actualización. Eso sería algo como:

[hooks] 
changegroup = hg update 2>&1 > /dev/null && path/to/script/restart-server.sh 

No todo el mundo es un gran fan de tener repositorios remotos se actualizan automáticamente sus directorios de trabajo de empuje, y ciertamente no es el valor predeterminado.

+21

Para cualquiera que solo quiera ver los controles remotos, use 'hg paths' que es equivalente para' git remote -v'. – Keyo

+2

default-push (en lugar de por ejemplo remote1) le permite a uno simplemente escribir "hg push". -push repository entonces se usa. Muy útil. – Christian

+3

@Christian 'default-push' es solo necesario/útil si su destino habitual de inserción difiere de su fuente de extracción habitual. Si son iguales (o nunca tira),' predeterminado 'basta. –

5

usted podría tener un vistazo a hg-git GitHub plugin:

hg-git general idea

añadiendo la capacidad de empujar y tirar a partir de un repositorio Git servidor de Mercurial.
Esto significa que puede colaborar en proyectos basados ​​en Git de Mercurial, o utilizar un servidor de Git como punto de colaboración para un equipo con desarrolladores que usan tanto Git como Mercurial.

Nota: No he probado esa herramienta con las últimas versiones de Mercurial.

+1

Tengo la capacidad de portar todo a mercurial, me gustaría usar solo una herramienta para la administración de mi fuente. Convierta una vez que el repositorio construya las estructuras apropiadas y luego solo los comandos mercuriales para la producción.Soy consciente de que tanto git como mercurial pueden colaborar, pero nunca lo han intentado. – topless

+2

^Chris: así es tu pregunta: ¿cómo convierto los repositorios Git a Mercurial? ", O" cómo declarar/configurar el repositorio remoto Hg "(como en http://superuser.com/questions/43686/setting- up-a-remote-mercurial-repository), o "¿dónde se declara un control remoto en Hg?" (http://crazythinking.wordpress.com/2009/03/07/starting-a-mercurial-hg-remote-repository /) – VonC

0

Si está en Unix y tiene instalado Git, puede utilizar esta función bash para añadir fácilmente un camino para los mandos a distancia y sin un editor de texto:

add-hg-path() { 
    git config -f $(hg root)/.hg/hgrc --add paths.$1 $2 
    awk '{$1=$1}1' $(hg root)/.hg/hgrc > /tmp/hgrc.tmp 
    mv /tmp/hgrc.tmp $(hg root)/.hg/hgrc 
} 

continuación, se invoca con:

$ add-hg-path remote1 https://path.to/remote1 

Si alguien quisiera construir un equivalente de Powershell, me gustaría incluirlo también. Otras mejoras de potencial incluyen la comprobación de errores en los parámetros y factorizar la llamada al $(hg root).

2

si desea agregar una ruta predeterminada, debe trabajar con default en su archivo ~project/.hg/hgrc. As Follows:

[paths] 
default = https://path/to/your/repo 

Buena suerte.

Cuestiones relacionadas