Usando Mercurial, ¿hay una manera fácil de diferenciar mi copia de trabajo con el archivo de sugerencias en el repositorio remoto predeterminado?

StackOverflow https://stackoverflow.com/questions/156280

Pregunta

Cuando uso mercurial, me gustaría poder diferenciar la copia de trabajo de un archivo con el archivo de sugerencias en mi depósito remoto predeterminado. ¿Hay una manera fácil de hacer esto?

Sé que puedo hacer un " hg entrante -p " para ver los conjuntos de cambios de parches que están llegando, pero sería bueno ver directamente los cambios reales para un archivo en particular que obtendría si hago un tirón de las últimas cosas (o lo que podría ser sobre el empuje fuera).

Lo más fácil que se me ocurre ahora es crear un pequeño script que eche un vistazo a la ubicación predeterminada en .hg / hgrc y descargue el archivo mediante curl (si está sobre http, de lo contrario, escríbalo sobre ssh, o simplemente haga una diferencia directa si está en el sistema de archivos local) y luego diferencie la copia de trabajo o la punta contra esa copia temporal.

Estoy tratando de vender mercurial a mi equipo, y uno de los miembros de mi equipo mencionó esto hoy como algo que pueden hacer fácilmente en SVN con sus herramientas de GUI.

¿Fue útil?

Solución

Después de investigar un poco, me encontré con la extensión de Rdiff que hace la mayor parte de lo que Lo quiero.

No viene con mercurial, pero se puede instalar clonando el repositorio:

hg clone http://hg.kublai.com/mercurial/extensions/rdiff 

Y luego modificando su archivo ~ / .hgrc para cargar la extensión:

[extensions] 
rdiff=~/path/to/rdiff/repo/rdiff.py

Es un poco peculiar, ya que en realidad modifica el " hg diff " comando detectando si el primer parámetro es una URL remota. Si es así, diferirá ese archivo contra su archivo de propinas en su repositorio local (no la copia de trabajo). Esto como el repositorio remoto es el primero en los argumentos, es lo contrario de lo que esperaría, pero puede pasar " - Invertir " al comando hg diff para cambiar eso.

Podía ver estas mejoras potenciales para la extensión, pero por ahora, puedo solucionarlas con una función de shell bash / zsh en mi archivo de inicio. Realiza un registro temporal de mi copia de trabajo (retenida por la transacción mercurial para que se pueda revertir), ejecuta el diff inverso y luego revierte la transacción para devolver las cosas a la forma en que estaban:

hgrdiff() {
    hg commit -m "temp commit for remote diff" && 
    hg diff --reverse http://my_hardcoded_repo $* &&
    hg rollback      # revert the temporary commit
}

Y luego llámalo con:

hgrdiff <filename to diff against remote repo tip>

Otros consejos

Puede intentar tener dos repositorios localmente: uno para cosas entrantes y otro para salientes. Entonces deberías poder hacer diferencias con cualquier herramienta. Ver aquí:

http://weblogs.java.net/blog /kohsuke/archive/2007/11/using_mercurial.html

para expandir el método Lars (por alguna razón el comentario no funciona), puede usar la opción -R en el comando diff para hacer referencia a un repositorio local. De esa manera, puede usar la misma aplicación de diferencias que ha especificado en hg

Usando plantillas puede obtener una lista de todos los archivos modificados:

hg incoming --template {files}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top