2010-04-02 3 views
14

Мы проводим испытания Mercurial на работе. Мы не хотим вводить наш пользователь/пароль каждый раз, когда мы взаимодействуем с репозиторием, поэтому мы устанавливаем расширение mercurial_keyring. Мы:Mercurial расширения не работают в Windows 7 x64?

  • установлен Python 2.6.5 (32 или 64 бит, в зависимости от системы)
  • Установленные Setuptools (для easy_install.exe)
  • easy_install KeyRing
  • easy_install mercurial_keyring

Затем внесены соответствующие изменения в% userprofile%/mercurial.ini в разделе [auth]. Он отлично работает на компьютере моего коллеги (32-бит xp sp3), но он не работает на моей машине (Windows 7 Ultimate x64). Также следует отметить, что setuptools должен был быть построен из исходного кода на Win 7 x64 (python setup.py bdist_wininst, а затем запустить полученный setuptools-0.6c11.win-amd64.exe).

Использование только hg.exe от Mercurial 1.5 бинарной установки (.msi,), я получаю эту ошибку, когда я бегу hg.exe:

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

Я попытался изменить Mercurial.ini, чтобы указать путь к файлу mercurial_keyring.py, вместо того, чтобы найти ртуть (поскольку он находится в PYTHONPATH).

Старый:

[extensions] 
mercurial_keyring = 

Новое:

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

Изменения ошибок в:

abort: could not import module keyring!

Таким образом, обеспечивая путь к расширению mercurial_keyring работ, зависимый модуль брелока еще Не может быть найдено.

После дальнейших исследований выясняется, что НЕТ расширений не работают. Все они производят ошибку:

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

Вероятно, что при запуске hg.exe, он не знает о PYTHONPATH. Я пробовал:

  • Python 2.6.5 32 бит
  • Python 2.6.5 64 бит
  • здание Mercurial 1,5 из источника с MinGW
  • Строительство Mercurial 1,5 от источника с MSVC9
  • Использование рт.ст. .exe из двоичного значения 1.5 (.msi)
  • Использование hg.py в c: \ python26 \ скрипты при построении из источника
  • Различные конфигурации в% userprofile%/mercurial.ini
  • Использование setuptools (easy_install.exe) для установки keyring и mercurial_keyring
  • Создание keyring и mercurial_keyring из источника (настройка python.py bdist_wininst)

Ничего не работает. Самый близкий я использую hg.py при построении из исходного кода. Это, по крайней мере, не дает мне ошибок и фактически создает% userprofile%/wincrypto_pass.cfg при вводе моих учетных данных. Но при последующих запросах он автоматически не вводит учетные данные. Это снова заставляет меня за них.

Интересно, что TortoiseHG является с использованием брелка. Я просто не могу заставить его работать в командной строке. Я думаю, что что-то происходит с Win 7 x64, что мешает ртути (hg.exe) видеть PYTHONPATH, поэтому он не может найти ни один из установленных модулей.

У кого-нибудь есть расширения, работающие в Win 7 x64? В частности, с бинарной установкой ртутного (не hg.py)?

ОБНОВЛЕНИЕ На данный момент я нашел подходящую работу. Так как TortoiseHG делает работу с mercurial_keyring, я просто изменил настройку PATH, чтобы включить папку tortoiseHG, но не c: \ mercurial. Теперь, когда я набираю «hg» в командной строке, он использует hg.exe в папке tortoiseHG, которая работает нормально. То же самое, это все еще проблема с mercurial расширениями на Win 7 x64. Ответы приветствуются.

ответ

17

Ответ на мой вопрос с моим предыдущим обновлением, так как пока нет других участников.

Подходит обходной путь: С TortoiseHG делает работы с mercurial_keyring, я просто изменил мой путь к включает папки TortoiseHG и исключить C: \ ртутного. Теперь, когда я набираю «hg» в командной строке, он использует hg.exe в папке tortoiseHG, которая отлично работает с keyring.

+0

'C: \ Program Files \ TortoiseHg' присутствовал в PATH, хотя мне пришлось удалить из него еще одну версию Mercurial:' c: \ Program Files \ Mercurial' –

4

Я использую:

  • на Windows Server 2008 SP2 x86:
    • Python 2.6.5 x86
    • Mercurial 1.5.1 x86
    • TortoiseHg 1.0.1 x86
  • на Windows Server 2008 R2:
    • Python 2.6.5 x86
    • Mercurial 1.5.1 x86
    • TortoiseHg 1.0.1 x64

На обеих установках, все установленные расширения загружены без ошибок.

Все инструменты установлены с помощью инсталляторов, размещенных на их сайтах. Mercurial появляется перед TortoiseHg в PATH. Я использую общий файл конфигурации ~/.hgrc для обоих инструментов и файл Mercurial.ini в установочной папке TortoiseHg, которая загружает только расширение mercurial_keyring.

В командной строке я должен вводить пароль каждый раз, когда это необходимо, но в TortoiseHg расширения keyring он полностью работает.

С Keyring Extension страницы на 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.

UPDATEhttp://asimilatorul.com/adapter/post/using-mercurial_keyring-extension-with-mercurial-on-windows/

Вы можете скопировать необходимые файлы с library.zip TortoiseHG в в Mercurial-х library.zip:

  • hgext \ mercurial_keyring.pyo
  • keyring__init __. Гнойно
  • брелока \ backend.pyo
  • брелока \ core.pyo
  • win32_crypto.pyd
+0

Я знаю, что расширение keyring работает с TortoiseHg. Он не работает с hg.exe, установленным из меркурийной установки, потому что этот hg.exe, когда он выполняется, похоже, не видит PYTHONPATH и не может найти никаких расширений. Поскольку вы загружаете расширение keyring в свой Mercurial.ini, которое является специфическим для * только * tortoiseHG, вы не пытаетесь загрузить его с помощью mercurial hg.exe. Попробуйте добавить расширение к вашему ~/.hgrc на машине Server 2008 R2 и посмотреть, работает ли оно. Это проблема. –

+0

Весь смысл моей настройки - загрузить брелок только для TortoiseHg. НО все остальные расширения работают отлично с Mercurial на WS2008 R2 x64 (который должен вести себя точно так же, как Win 7 x64). – alexandrul

4

The extension page состояния, TortoiseHG имеет некоторые дополнительные компоненты, чтобы сделать он работает на Windows и что он не работает должным образом без них. Похоже, что обходным путем для ссылки на версию TortoiseHG может быть самый простой способ заставить ее работать в Windows.