tys cursos python mercurial mercurial-hook

python - cursos - Una forma fácil e indolora de probar nuevos ganchos mercuriales(que son trabajos en curso)



gis cursos (2)

Estoy en el proceso de escribir un gancho mercurial changegroup. Aún no tengo todo resuelto, pero el proceso de prueba y error se hace más doloroso por el hecho de que tengo que seguir cometiendo y presionando solo para probar mi trabajo en progreso.

¿Hay alguna manera de "falsificar" un activador para ejecutar mi gancho de grupo de cambios con el estado actual del repositorio que se utilizará para sus parámetros?

Cualquier ayuda para agilizar este proceso sería muy apreciada. Gracias nick


Me temo que no hay capacidades de depuración incorporadas para esto. Lo que hago cuando escribo un gancho es configurar dos repositorios locales:

$ hg init repo $ hg clone repo clone

y luego configurar el gancho del grupo de changegroup en repo . Ahora entra en clone y haz

$ echo a > a $ hg add a $ hg commit -m ''a file''

para configurar el clone . Cada vez que quiero comprobar el gancho, corro

$ hg push; hg -R ../repo rollback

dentro de clone Lo guardo en mi historial de línea de comandos para poder presionar + Retorno para ejecutarlo una y otra vez. El hg rollback es la clave: cancela efectivamente el hg push para que pueda repetirlo una y otra vez.

Por supuesto, deberá ajustar esto según sea necesario para su gancho. Si el gancho comprueba el nombre del hg commit -u someone , utilice hg commit -u someone para configurarlo según sea necesario. Si el gancho necesita más de un conjunto de cambios en el grupo de cambios, haga dos o más confirmaciones antes de presionar - rollback se encargará de eliminar todos los conjuntos de cambios empujados. Si el gancho es ejecutado por hgweb , ejecute

$ hg serve --config ''web.push_ssl=no'' --config ''web.allow_push=*''

en un terminal para servir repo mientras lo empujas en otro terminal.


Recientemente he estado escribiendo un gancho de Python para Mercurial usando la API. Para probarlo, hice lo siguiente, después de lanzar el intérprete de Python dentro de la carpeta del repositorio.

from mercurial import ui, hg repo = hg.repository(ui.ui(), ''.'') execfile(''./myhook.py'') myhook(repo.ui, repo, ''hash'', ''outgoing'')

Donde myhook es su función de myhook.py (ubicada en myhook.py ), hash es el hash del conjunto de cambios con el que desea probar su enlace y outgoing es el tipo de enlace.

Si su enlace no se comporta como se espera, puede modificar su script y ejecutar las dos últimas líneas nuevamente para volver a intentarlo.