2013-03-24 3 views
5

В соответствии с этим ответом https://stackoverflow.com/a/13354944/867294 должно быть довольно легко настроить git для работы с меркуриальными «никакими зависимостями или чем-либо».Использование git-remote-hg на окнах

Это не похоже на то, что сглажено на Windows.

Я пытался следовать этому руководству

https://github.com/msysgit/msysgit/wiki/Guide-to-git-remote-hg

После фиксации Makefile работать на моей системе и строительства мерзавцем я не мог назвать ГИТ-дистанционного-ртутных, так как он жаловался, что не может найти интерпретатор python, все жестко настроены правильно. Так я вручную назвал его

C:/Python27/python.exe git-remote-hg clone C:/TestMercurialRepo 

Это теперь дает мне следующую ошибку.

Traceback (most recent call last): 
    File "git-remote-hg", line 99, in <module> 
    sys.exit(HgRemoteHelper().main(sys.argv)) 
    File "d:\development\msysgit\git\git_remote_helpers\helper.py", line 196, in m 
ain 
    repo = self.get_repo(alias, url) 
    File "git-remote-hg", line 33, in get_repo 
    if repo.capable('branchmap'): 
    File "c:\Python27\lib\site-packages\mercurial\repoview.py", line 205, in __get 
attr__ 
    return getattr(self._unfilteredrepo, attr) 
AttributeError: 'mqrepo' object has no attribute 'capable' 

Как я могу это исправить?
Если есть предварительная версия в любом месте, тогда это было бы супер потрясающе, потому что я чувствую, что делаю много, чтобы заставить это работать.

+1

Почему вы хотите взаимодействовать через 'git' с удаленным ртутным репозиторием и в Windows? 'hg' имеет гораздо лучшую поддержку в Windows, а неродные взаимодействия будут иметь свои причуды. – vonbrand

+0

@ vonbrand. Пока я сомневаюсь в мудрости его выбора, факт остается фактом: он хочет сделать это таким образом и должен быть способен. – Omnifarious

+0

@ Вообще, я хочу сказать, что есть менее болезненные способы делать то, что (я полагаю) здесь нужно. Проверьте [X Y проблем] (http://www.perlmonks.org/index.pl?node_id=542341). – vonbrand

ответ

0

Мне нужно будет исследовать немного дальше, но это выглядит так: git-remote-hg может зависеть от установленной версии Mercurial. В частности, тот, в котором объект repo поддерживает метод capable.

Это похоже на ошибку в коде git-remote-hg. Любая версия Mercurial, достаточно новая, чтобы иметь repoview, также достаточно новая, чтобы каждый тип объекта репо поддерживал метод capable. Поэтому я угадываю объект, у которого есть проблема: он создается git-remote-hg.

В любом случае, совершенно очевидно, что git-remote-hg использует код Mercurial Python для выполнения его работы. Таким образом, существует зависимость между ними.

Кроме того, ваш backtrace не соответствует коду https://github.com/felipec/git/blob/fc/remote/hg/contrib/remote-helpers/git-remote-hg, поэтому его отладить сложно.

+0

Мой файл - это сгенерированный файл, созданный во время сборки, который основан на этом файле: https://github.com/msysgit/git/blob/694fb7247b0bb3a3f9810f1350f997ebdb6008ae/git-remote-hg.py За исключением первых двух строк которые удалены в моем файле git-remote-hg Я не уверен, что отношение между этими файлами –

8

Я получил это для работы сегодня в Windows. В принципе, поскольку в дистрибутивах msysgit нет поддержки Python, я взял файл git-remote-hg.py Felipe и использовал py2exe для его упаковки в качестве исполняемого файла. После этого я помещаю весь вывод py2exe в папку «libexec» в моем каталоге установки Git, и он работает.

Для того, чтобы работать, вам нужно:

  1. Python 2.7
  2. модуль Mercurial Python (окна монтажники here)
  3. py2exe (окна монтажники here)
  4. Фелипе ГИТ-дистанционным рт.ст. сценарий python (сохранение сырья в файл here)

Создать файл с именем setup.ру, которая содержит:

from distutils.core import setup 
import py2exe 

setup(console=['git-remote-hg.py']) 

Сохраните файл в файловой системе и выполните следующую команду:

python setup.py py2exe --include mercurial  

py2exe произведут папку с именем «расстояние», который содержит вывод. Скопируйте содержимое этой папки в папку libexec \ git-core в вашей основной папке установки Git (например, C: \ Program Files (x86) \ Git).

Теперь вы можете клонировать от репозитория Mercurial, используя клиента Git.

(Примечание: я написал эти шаги в спешке, поэтому, пожалуйста, отправьте сообщение, если я ничего не оставил).

+0

Я думаю, что я правильно выполнил все шаги, но когда я пытаюсь использовать сценарий, я получаю 'LoadLibrary (pythondll) неудачно ' –