6

根据这个答案https://stackoverflow.com/a/13354944/867294应该很容易设置 git 以使用 mercurial “没有依赖关系或任何东西”。

这在 Windows 上似乎并不顺利。

我尝试遵循本指南

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

在修复 makeFile 以在我的系统上工作并构建 git 之后,我无法调用 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'

我怎样才能解决这个问题 ?
如果任何地方都有预构建版本,那将是非常棒的,因为我觉得我正在做很多事情来让它工作。

4

2 回答 2

8

我今天让它在 Windows 上工作。基本上,由于 msysgit 发行版不支持 Python,我使用 Felipe 的 git-remote-hg.py 文件并使用 py2exe 将其打包为可执行文件。之后,我将所有的 py2exe 输出放到我的 Git 安装目录下的“libexec”文件夹中,它就可以工作了。

为了让它工作,你需要:

  1. 蟒蛇 2.7
  2. Mercurial Python 模块(此处为 Windows 安装程序)
  3. py2exe(此处为 Windows 安装程序)
  4. Felipe 的 git-remote-hg python 脚本(在此处保存原始文件)

创建一个名为 setup.py 的文件,其中包含:

from distutils.core import setup
import py2exe

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

将文件保存到您的文件系统并运行以下命令:

python setup.py py2exe --include mercurial    

py2exe 将生成一个名为“dist”的文件夹,其中包含输出。将该文件夹的内容复制到 Git 主安装文件夹下的 libexec\git-core 文件夹中(例如,C:\Program Files(x86)\Git)。

现在,您应该可以使用 Git 客户端从 Mercurial 存储库进行克隆了。

(注意:我写这些步骤有点匆忙,所以如果我遗漏了任何内容,请回帖)。

于 2013-06-19T18:18:40.037 回答
0

我将不得不进一步调查,但这看起来git-remote-hg可能取决于安装的特定版本的 Mercurial。特别是repo对象支持该capable方法的对象。

这看起来像是 git-remote-hg 代码中的错误。任何足够新的 Mercurial 版本repoview也足够新,以至于每种 repo 对象都应该支持该capable方法。所以我猜测有问题的对象是由 git-remote-hg 创建的。

无论如何,很明显 git-remote-hg 使用 Mercurial Python 代码来完成它的工作。所以它们之间存在依赖关系。

此外,您的回溯与https://github.com/felipec/git/blob/fc/remote/hg/contrib/remote-helpers/git-remote-hg的代码不匹配,因此很难调试您的设置.

于 2013-03-24T17:24:39.577 回答