2013-03-24 15 views
5

Zgodnie z tą odpowiedzią, https://stackoverflow.com/a/13354944/867294 powinno być dość łatwe ustawienie git do pracy z mercurial "bez zależności czy cokolwiek".Używanie git-remote-hg w oknach

To nie wydaje się działać tak gładko w systemie Windows.

starałem się do tej instrukcji

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

Po zamocowaniu Makefile pracować w moim systemie i budowlanej git i nie mógł zadzwonić git-remote-Hg, ponieważ skarżył się, że nie mógł znaleźć interpreter Pythona, wszystkie trudne to poprawnie skonfigurowane. Więc ja nazwał go ręcznie z

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

to teraz daje mi następujący błąd.

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' 

Jak mogę to naprawić?
Jeśli istnieje niska wersja kompilacji, to byłoby super, bo czuję, że robię dużo, aby to zadziałało.

+1

Dlaczego chcesz interakcji za pośrednictwem 'git' ze zdalnym repozytorium mercurial i Windows? 'hg' ma znacznie lepszą obsługę w systemie Windows, a nie-natywne interakcje będą miały swoje dziwactwa. – vonbrand

+0

@vonbrand - Chociaż kwestionuję także jego wybraną mądrość, pozostaje faktem, że chce to zrobić w ten sposób i powinien być w stanie. – Omnifarious

+0

@Odwrotne, moim celem jest to, że istnieją mniej bolesne sposoby robienia tego, co (jak sądzę) jest tutaj pożądane. Sprawdź [Problemy XY] (http://www.perlmonks.org/index.pl?node_id=542341). – vonbrand

Odpowiedz

0

Będę musiał zbadać nieco dalej, ale wygląda na to, że git-remote-hg może zależeć od konkretnej zainstalowanej wersji Mercurial. W szczególności jeden obiekt, w którym obiekt repo obsługuje metodę .

To wygląda jak błąd w kodzie git-remote-hg. Każda wersja Mercurial wystarczająco nowa, aby mieć repoview, jest również na tyle nowa, że ​​każdy rodzaj obiektu repo powinien obsługiwać metodę . Zgaduję, że obiekt, który ma problem, jest tworzony przez git-remote-hg.

W każdym razie, jest całkiem oczywiste, że git-remote-hg używa kodu Mercurial Python do wykonania swojej pracy. Istnieje więc między nimi zależność.

Twój ślad śladu nie pasuje do kodu pod https://github.com/felipec/git/blob/fc/remote/hg/contrib/remote-helpers/git-remote-hg, więc trudno jest debugować konfigurację.

+0

Mój plik to wygenerowany plik, który jest generowany podczas kompilacji, który jest oparty na tym pliku: https://github.com/msysgit/git/blob/694fb7247b0bb3a3f9810f1350f997ebdb6008ae/git-remote-hg.py Z wyjątkiem pierwszych dwóch wierszy które są usunięte w moim pliku git-remote-hg Nie jestem pewien, jaka jest relacja między tymi plikami –

8

Mam to dzisiaj do pracy w systemie Windows. Zasadniczo, ponieważ dystrybucje msysgit nie mają wsparcia dla Pythona, wziąłem plik git-remote-hg.py Felipe i użyłem py2exe, aby spakować go jako plik wykonywalny. Następnie umieszczam wszystkie dane wyjściowe py2exe w folderze 'libexec' pod katalogiem instalacyjnym Git i działa.

go do pracy, trzeba:

  1. Python 2.7
  2. modułu Mercurial Python (Windows instalatorów here)
  3. py2exe (Windows instalatorów here)
  4. Felipe git-remote-hg skrypt python (zapisz surowe do pliku here)

Utwórz plik o nazwie setup.py, który zawiera:

from distutils.core import setup 
import py2exe 

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

Zapisz plik w systemie plików i uruchomić następujące polecenie:

python setup.py py2exe --include mercurial  

py2exe będzie produkować folder o nazwie „gmina”, który zawiera wyjście. Skopiuj zawartość tego folderu do folderu libexec \ git-core w głównym folderze instalacyjnym Git (np. C: \ Program Files (x86) \ Git).

Teraz powinieneś być w stanie sklonować z repozytorium Mercurial za pomocą klienta Git.

(Uwaga: Te kroki napisałem trochę, więc proszę odeślij, jeśli coś mi pominęło).

+0

Myślę, że podążyłem za wszystkimi krokami poprawnie, ale kiedy próbuję używać skryptu, otrzymuję komunikat "LoadLibrary (pythondll)" ' –