2012-01-14 17 views
10

Antes de presionar en un repositorio remoto, quiero ver una diferencia consolidada entre el jefe de mi repositorio local y el jefe del repositorio que estoy enviando también. La mejor forma que conozco de hacer esto es al hg clone el repositorio remoto, obtener la revisión de la cabecera, luego hacer una diferencia entre mi cabeza y esa revisión. Pero esto lleva mucho tiempo. ¿Hay una manera rápida?¿Cómo ver la diferencia entre el jefe del repositorio local y el jefe del repositorio remoto?

+2

Si está presionando a un repositorio cuya cabeza no es un antepasado de su revisión actual, ¿no es una señal de que probablemente está haciendo algo muy malo? – geoffspear

+1

El jefe del repositorio remoto es un antepasado de mi jefe local. Quiero obtener una diferencia entre esa cabeza y mi cabeza local. Así que tal vez solo quiero un comando hg para imprimir la revisión principal de un repositorio remoto. Entonces puedo diferir manualmente contra esa revisión. – jhourback

Respuesta

11

Si está buscando una forma de obtener todos los cambios que ha realizado que no están en el repositorio remoto.

$ hg outgoing -p 

El -p es opcional y informes en la forma de un parche, de lo contrario, informa de la misma manera un hg log. Estos son solo sus cambios independientemente de si alguien más ha enviado algo al repositorio remoto.

Si usted está buscando cambios en el repositorio remoto que no tiene a continuación, utiliza

$ hg incoming 

Una vez más hay una forma -p si lo desea.


Ninguno de estos son exactamente lo que pidieron, pero sospecho que en realidad no quiero eso.

Si realmente desea la diferencia entre sus cambios y el nuevo encabezado en el repositorio remoto creado por otra persona, deberá realizar sus cambios.

hg pull 
hg heads      # find revision number of new head 
hg diff -r 124992   # or whatever the revision number is. 
22

Además de

$ hg outgoing -p 

que normalmente utilizo, me gusta apuntar a revision sets. Es un lenguaje de consulta que puede usar con hg diff (y todos los demás comandos que le permiten especificar conjuntos de cambios). Por lo que puede poner en práctica hg outgoing -p por

$ hg log -r "outgoing()" -p 

y se puede obtener un diff entre el padre del primer conjunto de cambios saliente y el último conjunto de cambios saliente con

$ hg diff -r "p1(first(outgoing()))" -r "last(outgoing())" 

Por último, el remotebranch extension puede mantener la información local sobre la sucursales remotas para que no necesite usar la red para buscar esta información. Se le permite utilizar

$ hg log -r "not pushed()" 

para encontrar los conjuntos de cambios salientes, pero es mucho más rápido ya que no hay ida y vuelta de red implicados.

Cuestiones relacionadas