Mercurial не работает в Windows 7 x64? - PullRequest
15 голосов
/ 02 апреля 2010

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

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

И затем внес соответствующие изменения в% userprofile% / mercurial.ini в разделе [auth]. Он отлично работает на компьютере моего коллеги (32bit 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:

*** не удалось импортировать расширение mercurial_keyring: модуль не указан mercurial_keyring

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

Старый:

[extensions]
mercurial_keyring =

Новое:

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

Ошибка меняется на:

abort: не удалось импортировать модуль брелок!

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

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

*** не удалось импортировать расширение [имя расширения]: модуль не указан [имя модуля]

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

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

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

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

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

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

Ответы [ 3 ]

18 голосов
/ 02 апреля 2010

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

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

4 голосов
/ 19 декабря 2011

На странице расширения указано, что TortoiseHG имеет некоторые дополнительные компоненты для работы в Windows и что без них он не работает должным образом. Похоже, что обходной путь обращения к версии TortoiseHG может быть самым простым способом заставить ее работать в Windows.

4 голосов
/ 05 апреля 2010

Я использую:

  • в 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 расширения набора ключей полностью работают.

Со страницы Расширение набора ключей на вики Mercurial:

Если вы используете Windows, мы рекомендуем вам использовать TortoiseHg. THG поставляется со специальными бэкэндами ключей Windows, без которых расширение mercurial-keyring не может работать должным образом в Windows.

ОБНОВЛЕНИЕ http://asimilatorul.com/adapter/post/using-mercurial_keyring-extension-with-mercurial-on-windows/

Вы можете скопировать необходимые файлы из библиотеки.zip TortoiseHg в библиотеки.zip библиотеки *:

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