2010-04-02 30 views
14

Estamos probando la conducción de Mercurial en el trabajo. No queremos tener que ingresar nuestro usuario/pase cada vez que interactuamos con un repositorio, así que configuramos la extensión mercurial_keyring. Nosotros:Las extensiones Mercurial no funcionan en Windows 7 x64?

  • instalado Python 2.6.5 (32 o 64 bits, dependiendo del sistema)
  • setuptools instalado (por easy_install.exe)
  • llavero easy_install
  • mercurial_keyring easy_install

Y luego realizó los cambios apropiados en% userprofile%/mercurial.ini en la sección [auth]. Funciona bien en la computadora de mi colega (32bit xp sp3), pero no funciona en mi máquina (Windows 7 Ultimate x64). También es de destacar que las herramientas de instalación tuvieron que ser compiladas desde la fuente en Win 7 x64 (python setup.py bdist_wininst), luego se ejecutaron las herramientas de configuración resultantes-0.6c11.win-amd64.exe).

Utilizando sólo hg.exe del 1,5 instalación binaria Mercurial (.msi), me sale este error cuando corro hg.exe:

*** failed to import extension mercurial_keyring: No module named mercurial_keyring

Traté de cambiar mi mercurial.ini, para especificar la ruta al archivo mercurial_keyring.py, en lugar de tener mercurial find it (ya que está en PYTHONPATH).

antigua:

[extensions] 
mercurial_keyring = 

Nuevo:

[extensions] mercurial_keyring = 
c:/mercurial/extensions/mercurial_keyring.py 

el error cambia a:

abort: could not import module keyring!

Así, mientras que proporciona la ruta de acceso a las obras de ampliación mercurial_keyring, el módulo de claves depende todavía no pudo ser encontrado.

Después de más investigaciones, parece que NO funcionan las extensiones. Todos ellos producen el error:

*** failed to import extension [extension name]: No module named [module name]

Parece que cuando se ejecuta hg.exe, no es consciente de PYTHONPATH. He tratado:

  • Python 2.6.5 32 bit
  • Python 2.6.5 64 bit
  • Building Mercurial 1.5 de la fuente con MinGW
  • Building Mercurial 1.5 de la fuente con MSVC9
  • Usando hg .exe desde el 1,5 dist binario (.msi)
  • Uso de la hg.py en c: \ Python26 \ scripts cuando la construcción de la fuente
  • Varias configuraciones en% userprofile%/mercurial.ini
  • Usando setuptools (easy_install.exe) para instalar keyring y mercurial_keyring
  • Building keyring y mercurial_keyring desde el origen (configuración de python.py bdist_wininst)

Nada funciona. Lo más cercano que tengo es usar hg.py cuando construyo desde la fuente. Al menos no me da errores, y realmente crea% userprofile%/wincrypto_pass.cfg cuando ingreso mis credenciales. Pero en solicitudes posteriores, no ingresa las credenciales automáticamente. Me impulsa hacia ellos nuevamente.

Curiosamente, TortoiseHG es usando el llavero. Simplemente no puedo hacer que funcione en la línea de comando. Creo que algo está sucediendo con Win 7 x64 que impide que mercurial (hg.exe) vea el PYTHONPATH, por lo que no puede encontrar ninguno de los módulos instalados.

¿Alguien tiene extensiones que funcionen en Win 7 x64? Específicamente con la instalación binaria de mercurial (no hg.py)?

ACTUALIZACIÓN He encontrado un trabajo adecuado por el momento. Como TortoiseHG funciona con mercurial_keyring, simplemente he cambiado la configuración de PATH para incluir la carpeta tortoiseHG, pero no c: \ mercurial. Ahora cuando escribo "hg" en la línea de comandos, está usando hg.exe en la carpeta tortoiseHG, que funciona bien. De todos modos, este sigue siendo un problema con las extensiones mercuriales en Win 7 x64. Respuestas bienvenidas

Respuesta

17

Respondiendo a mi propia pregunta con mi actualización anterior, ya que todavía no hay otras personas interesadas.

solución conveniente: Desde hace TortoiseHG trabajo con mercurial_keyring, simplemente he cambiado mi camino a incluyen la carpeta TortoiseHg, y excluye c: \ mercurial. Ahora cuando escribo "hg" en la línea de comando, está usando hg.exe en la carpeta tortoiseHG, que funciona bien con el llavero.

+0

'C: \ Program Files \ TortoiseHg' estaba presente en el PATH, aunque tuve que eliminar otra versión de Mercurial de él:' c: \ Program Files \ Mercurial' –

4

que estoy usando:

  • en x86 de Windows Server 2008 SP2:
    • Python 2.6.5 x86
    • Mercurial 1.5.1 x86
    • TortoiseHg 1.0.1 x86
  • en Windows Server 2008 R2:
    • Python 2.6.5 x86
    • Mercurial 1.5.1 x86
    • TortoiseHg 1.0.1 x64

En ambas configuraciones, todas las extensiones configuradas se cargan sin errores.

Todas las herramientas se instalan usando los instaladores provistos en sus sitios. Mercurial aparece antes de TortoiseHg en PATH. Estoy usando un archivo de configuración común ~/.hgrc para ambas herramientas, y un archivo Mercurial.ini en la carpeta de instalación de TortoiseHg que está cargando solo la extensión mercurial_keyring.

En la línea de comando, debo ingresar la contraseña cada vez que sea necesario, pero en TortoiseHg, las extensiones del conjunto de claves están funcionando plenamente.

Desde la página Keyring Extension en el wiki de Mercurial:

If you are on Windows, we recommend you use TortoiseHg. THG ships with Windows specific keyring backends, without which the mercurial-keyring extension cannot function properly on Windows.

ACTUALIZACIÓNhttp://asimilatorul.com/adapter/post/using-mercurial_keyring-extension-with-mercurial-on-windows/

Puede copiar los archivos necesarios de library.zip de TortoiseHg en Mercurial library.zip:

  • hgext \ mercurial_keyring.pyo
  • keyring__init __. Pyo
  • llavero \ backend.pyo
  • llavero \ core.pyo
  • win32_crypto.pyd
+0

Soy consciente de que la extensión del conjunto de claves funciona con TortoiseHg. No funciona con hg.exe instalado desde la instalación de mercurial, porque hg.exe, cuando se ejecuta, no parece ver el PYTHONPATH y no puede encontrar ninguna extensión. Como carga la extensión del anillo de claves en su Mercurial.ini, que es específico para * only * tortoiseHG, no está intentando cargarlo con mercurial hg.exe. Intente agregar la extensión a su ~/.hgrc en la máquina de Server 2008 R2 y vea si funciona. Ese es el problema. –

+0

El objetivo de mi configuración es cargar el llavero solo para TortoiseHg. PERO todas las otras extensiones funcionan bien con Mercurial en WS2008 R2 x64 (que debería comportarse como Win 7 x64). – alexandrul

4

The extension page estados que TortoiseHG tiene algunos componentes adicionales para hacer funciona en Windows y no funciona correctamente sin ellos. Parece que la solución para hacer referencia a la versión de TortoiseHG puede ser la forma más fácil de hacerlo funcionar en Windows.

Cuestiones relacionadas