2012-03-12 6 views
9

Cuando escribo hg outgoing, consigo una respuesta como esta:¿Por qué Mercurial necesita hablar con el servidor, para enumerar las confirmaciones salientes (no empujadas)?

comparing with ssh://server:1234/path/to/repo 

y un retraso mientras se comunica a través de la red.

¿Por qué es necesario este tráfico de red? ¿Hay algo fundamental acerca de Mercurial que significa que no puede recordar qué compromisos se han empujado y cuáles no?

¿Hay algún comando alternativo que pueda proporcionarme información similar sin tener que comunicarme a través de la red?

+3

No es posible saber qué conjuntos de cambios están en el repositorio remoto sin consultar el repositorio remoto. ¿Qué pasa si sacaste los cambios del repositorio local a otro y luego lo enviaste a tu servidor desde ese repositorio? – geoffspear

Respuesta

14

Como Mercurial es un sistema distribuido, existen múltiples formas para que sus cambios pasen de su repositorio local al repositorio remoto.

Por ejemplo:

  • que es posible que alguien tire de cambios de ti y luego empujar esos cambios al repositorio remoto
  • que acaba en realidad podría copiar tu repositorio local utilizando cualquier sistema operativo que tiene y Mercurial sería totalmente inconsciente de eso. Luego puede enviar los cambios en esta copia al repositorio remoto.

Sin embargo, si tiene Mercurial 2.1 o posterior, puede usar hg phase para determinar qué conjuntos de cambios se han insertado. Suponiendo que no usa hg phase para cambiar el estado de cualquier conjunto de cambios, los conjuntos de cambios con una fase de draft o secret no se han presionado y aquellos con una fase de public tienen. Utilice

$ hg log -r "not public()" 

para ver conjuntos de cambios no publicados.

No encontrará los dos ejemplos que proporcioné anteriormente, pero probablemente será suficiente si solo quiere saber qué conjunto de cambios no ha insertado.

Mire here o consulte hg help phases para obtener instrucciones sobre cómo trabajar con fases.

3

Un repositorio de mercurial puede conectarse potencialmente con muchos otros repositorios. Por lo tanto, supongo que debe asegurarse de que los cambios que no se enviaron desde su repositorio ya no hayan llegado de otro repositorio.

Cuestiones relacionadas