2013-03-24 4 views
5

この回答によれば、https://stackoverflow.com/a/13354944/867294は、水銀「no dependencies or anything」で動作するようにgitを設定するのはかなり簡単です。ウィンドウ上でgit-remote-hgを使用する

これは、Windows上でスムーズに動作しないようです。

は、私は私のシステムと、それは見つけることができなかった不満をので、私はgitのリモート-HGを呼び出すことができなかった建物のgitの上で動作するようにMakefileを固定した後、このガイド

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

に従ってみました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'を介してリモートの水銀リポジトリとやりとりしたいのですが? 'hg'はWindows上でより優れたサポートを提供し、非ネイティブのやりとりはそれらの癖を持ちます。 – vonbrand

+0

@vonbrand - 私は彼の選択の知恵にも疑問を呈していますが、事実は彼がそうしたいと思っていて、できるはずです。 – Omnifarious

+0

@何でも、私の主張は、ここで欲しいもの(私が推測する)をする苦痛の少ない方法があるということです。 [X Y problems](http://www.perlmonks.org/index.pl?node_id=542341)を参照してください。 – vonbrand

答えて

0

もう少し調べる必要がありますが、これはgit-remote-hgがインストールされている特定のバージョンのMercurialに依存する可能性があります。特に、repoオブジェクトがcapableメソッドをサポートしているもの。

これはgit-remote-hgコードのバグのようです。 repoviewを持つ十分な新しいMercurialのバージョンも、すべての種類のリポジトリオブジェクトがcapableメソッドをサポートするのに十分なほど新しいものです。だから、私はgit-remote-hgによって作成されている問題があるオブジェクトを推測しています。

とにかく、git-remote-hgがMercurial Pythonコードを使ってその作業をしていることは明らかです。だから、それらの間に依存関係があります。

また、バックトレースは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最初の2行を除いて私のgit-remote-hgファイルで削除されています これらのファイルの間に何の関係があるのか​​わかりません –

8

これは今日Windowsで動作するようになっています。基本的に、msysgitディストリビューションにはPythonのサポートがないので、Felipeのgit-remote-hg.pyファイルをpy2exeを使って実行可能ファイルとしてパッケージ化しました。その後、私はすべてのpy2exeの出力を私のGitインストールディレクトリの下の 'libexec'フォルダに置き、それが動作します。それが機能するためには

、あなたが必要とする:

  1. のPython 2.7
  2. MercurialのPythonモジュール(Windowsのインストーラhere
  3. py2exeを(Windowsのインストーラはhere
  4. フェリペさんのgit-リモート-HG Pythonスクリプト(ファイルを生ファイルに保存here

作成setupという名前のファイル含まれていPY:

from distutils.core import setup 
import py2exe 

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

は、あなたのファイルシステムにファイルを保存し、次のコマンドを実行します。

python setup.py py2exe --include mercurial  

py2exeは、出力が含まれている「DIST」というフォルダが生成されます。そのフォルダの内容をGitのメインインストールフォルダ(例えば、C:\ Program Files(x86)\ Git)のlibexec \ git-coreフォルダにコピーします。

これで、Gitクライアントを使用してMercurialリポジトリからクローンを作成できるようになりました。

(注:これらの手順は少し時間がかかりましたので、私が何かを残しておけば返信してください)。

+0

私はすべてのステップを正しく実行したと思いますが、スクリプトを試してみると 'LoadLibrary(pythondll) ' –

関連する問題