Pergunta

Estamos testando o Mercurial no trabalho. Não queremos inserir nosso usuário/passar cada vez que interagimos com um repositório, por isso configuramos a extensão Mercurial_Keyring. Nós:

  • Instalado Python 2.6.5 (32 ou 64 bits, dependendo do sistema)
  • Instalado setupTools (para easy_install.exe)
  • Easy_install Keyring
  • easy_install mercurial_keyring

E depois fez as alterações apropriadas para %userprofile %/mercurial.ini no [auth] seção. Funciona bem no computador do meu colega (32 bits XP SP3), mas não funciona na minha máquina (Windows 7 Ultimate X64). Também digno de nota, os setupTools tiveram que ser construídos a partir da fonte no Win 7 x64 (python setup.py bdist_wininst, depois execute o setupTools-0.6c11.win-amd64.exe).

Usando apenas hg.exe da instalação binária Mercurial 1.5 (o .msi), recebo esse erro quando executo o hg.exe:

*** Falha ao importar extensão mercurial_keyring: nenhum módulo chamado mercurial_keyring

Tentei alterar meu mercurial.ini, especificar o caminho para o arquivo mercurial_keyring.py, em vez de ter o Mercurial encontrando -o (já que está no pythonpath).

Velho:

[extensions]
mercurial_keyring =

Novo:

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

O erro muda para:

Abort: não foi possível importar os chaveiros do módulo!

Portanto, enquanto fornece o caminho para a extensão Mercurial_Keyring funciona, o módulo de chaveiro dependente ainda não pode ser encontrado.

Após uma investigação mais aprofundada, parece que nenhuma extensão funciona. Todos eles produzem o erro:

*** Falha ao importar extensão [Nome da extensão]: Nenhum módulo chamado [Nome do Módulo

Parece que, ao executar o HG.exe, ele não está ciente do PythonPath. Eu tentei:

  • Python 2.6.5 32 bits
  • Python 2.6.5 64 bits
  • Construindo Mercurial 1.5 da fonte com Mingw
  • Construindo Mercurial 1.5 da fonte com MSVC9
  • Usando Hg.exe do Dist binário 1.5 (.msi)
  • Usando o hg.py em c: python26 scripts ao construir a partir da fonte
  • Várias configurações em %userprofile %/mercurial.ini
  • Usando o setupTools (easy_install.exe) para instalar o Keyring e o Mercurial_Keyring
  • Construindo Keyring e Mercurial_keyring da fonte (python setup.py bdist_wininst)

Nada funciona. O mais próximo que tenho é usar o HG.Py ao construir a partir da fonte. Pelo menos não me dá erros e, na verdade, cria %userprofile %/wincrypto_pass.cfg quando inseri minhas credenciais. Mas, nas solicitações subsequentes, ele não insere as credenciais automaticamente. Isso me leva a eles novamente.

Curiosamente, Tortoisehg é usando o chaveiro. Eu simplesmente não consigo fazer funcionar na linha de comando. Eu acho que algo está acontecendo com o Win 7 X64 que está impedindo que o Mercurial (Hg.exe) veja o PythonPath, para que não encontre nenhum dos módulos instalados.

Alguém tem extensões trabalhando no Win 7 x64? Especificamente com a instalação binária do mercurial (não hg.py)?

ATUALIZAREncontrei um trabalho adequado por enquanto. Desde Tortoisehg faz Trabalho com Mercurial_Keyring, simplesmente mudei meu caminho para incluir a pasta Tortoisehg, mas não C: Mercurial. Agora, quando digito "HG" na linha de comando, ele está usando o HG.exe na pasta Tortoisehg, que funciona bem. Da mesma forma, isso ainda é um problema com extensões mercuriais no Win 7 x64. Respostas bem -vindas.

Foi útil?

Solução

Respondendo à minha própria pergunta com minha atualização anterior, já que ainda não há outros tomadores.

Solução alternativa adequada: desde o Tortoisehg faz trabalhar com mercurial_keyring, eu simplesmente mudei meu caminho para incluir a pasta Tortoisehg e excluir C: Mercurial. Agora, quando digito "HG" na linha de comando, ele está usando o Hg.exe na pasta Tortoisehg, que funciona bem com o chaveiro.

Outras dicas

Estou a usar:

  • No Windows Server 2008 SP2 x86:
    • Python 2.6.5 x86
    • Mercurial 1.5.1 x86
    • Tortoisehg 1.0.1 x86
  • No Windows Server 2008 R2:
    • Python 2.6.5 x86
    • Mercurial 1.5.1 x86
    • Tortoisehg 1.0.1 x64

Nas duas configurações, todas as extensões configuradas são carregadas sem erros.

Todas as ferramentas são instaladas usando os instaladores fornecidos em seus sites. Mercurial aparece antes do Tortoisehg no caminho. Estou usando um arquivo de configuração comum ~/.hgrc para ambas as ferramentas e um Mercurial.ini Arquivo na pasta de instalação do Tortoisehg que está carregando apenas o mercurial_keyring extensão.

Na linha de comando, tenho que inserir a senha sempre que for necessária, mas no Tortoisehg as extensões de chaveiro, ela está funcionando totalmente.

De Extensão de Keyring Página no Wiki Mercurial:

Se você estiver no Windows, recomendamos que você use o Tortoisehg. Os navios THG com os back-ends de chaveiro específicos do Windows, sem os quais a extensão de keyer mercurial não pode funcionar corretamente nas janelas.

ATUALIZAR http://asimilatorul.com/adapter/post/using-mercureial_keyring-extension-with-mercureial-on-windows/

Você pode copiar os arquivos necessários do Tortoisehg's biblioteca.zip no Mercurial's biblioteca.zip:

  • hgext mercurial_keyring.pyo
  • keyring__init __. pyo
  • Keyring backend.pyo
  • Keyring Core.pyo
  • win32_crypto.pyd

A página de extensão afirma que o Tortoisehg tem alguns componentes adicionais para fazê -lo funcionar no Windows e que não funciona corretamente sem eles. Parece que a solução alternativa de referenciar a versão TortoiseHG pode ser a maneira mais fácil de fazê -la funcionar no Windows.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top