2011-04-18 12 views
9

Estoy intentando crear un archivo hgrc compartido con extensiones comunes para Mercurial, por lo que mis compañeros de trabajo pueden obtener una experiencia coherente y encontrar herramientas útiles. Sin embargo, habilitar extensiones que no incluyen Mercurial está causando problemas.Rutas relativas al repositorio en el archivo .hgrc de Mercurial

puntos hgrc de mi repo principal a un archivo compartido .hgrc fuente controlada:

\ Repo.hg \ hgrc

%include ..\tools\hg\dev.hgrc 

El dev.hgrc compartida permite entonces extensiones mantenemos fuente -controlled:

\ Repo \ tools \ hg \ dev.hgrc

[extensions] 
hgshelve=tools\hg\hgshelve\hgshelve.py 
fold=tools\hg\hgfold\fold.py 

El problema es que esas extensiones solo se encuentran cuando hg se ejecuta desde el directorio raíz Repo. Ejecutarlo desde un subdirectorio da errores:

E:\Repo\src>hg 
*** failed to import extension hgshelve from tools\hg\hgshelve\hgshelve.py: [Errno 2] No such file or directory 
*** failed to import extension fold from tools\hg\hgfold\fold.py: [Errno 2] No such file or directory 

que quiero hacer referencia a la raíz del repositorio sin depender de nada, excepto la estructura de ruta relativa.

Miré en el manual, pero no veo ninguna opción de ruta relativa del repositorio allí.

+0

Hicimos algo muy similar en nuestra empresa. Lamentablemente, no encontramos una solución para esto y simplemente solucionamos el problema. Todo el mundo clona nuestro repositorio de hgtools en la misma ubicación $ HOME/.hg-scripts/hgtools y luego% incluye ese archivo en su archivo $ HOME/.hgrc. Todas las rutas en el hgrc compartido son rutas completas del formulario $ HOME/.hg-scripts/hgtools/... Nos funciona, pero no es muy elegante. –

+1

Gracias Mark. Es bueno saber que no estamos solos. – jasonrclark

+2

Ustedes nunca conseguirán arreglar estas cosas si no escriben a la comunidad "real" de Mercurial: [email protected] - mientras que algunos desarrolladores intentan ayudar aquí, la mayoría de los desarrolladores de Mercurial solo leen las listas de correo. (Creo que deberíamos tener una forma de especificar las rutas relativas al repositorio, permitiría muchas maneras agradables de usar la directiva '% include'.) –

Respuesta

0

No es exactamente lo que está buscando, pero si sus sistemas son controlados por marionetas, chef o paquetes, puede fácilmente desglosar un paquete que suelta archivos en /etc/mercurial/hgrc.d/ cualquier cosa que haya allí ejecutado para todos los usuarios en cada ejecución. Puede poner los archivos .py de extensión y los fragmentos de hgrc para habilitarlos allí.

Cuestiones relacionadas