Using git-remote-hg on windows

According to this answer https://stackoverflow.com/a/13354944/867294 it should be fairly easy to set up git to work with mercurial “no dependencies or anything”.

This doesn’t seem to work all that smooth on Windows tough.

  • Github push error: unpack failed: index-pack abnormal exit
  • Keep commits history after a 'git merge'
  • How do you merge into another branch using travis with git commands?
  • git rm -r --cached not removing submodule folder and contents
  • How to handle your first Pull Request on GitHub?
  • How can I throw away local changes in my Git repository when pulling a new version from github?
  • I tried to follow this guide

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

    After fixing the makeFile to work on my system and building git i couldn’t call git-remote-hg because it complained it couldn’t find the python interpreter, all tough it’s configured correctly.
    So i manually called it with

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

    This is now giving me the following error.

    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'
    

    How can i fix this ?
    If there is a pre build version anywhere then that would be super awesome because i feel like i’m doing way to much to get this to work.

  • How to unsquash a commit?
  • 'git stash apply' with Interactive Mode
  • Remove directory from remote repository after adding them to .gitignore
  • cloning repository from gitweb
  • How could I ignore bin and obj folders from git repository?
  • setting up git ssh access error: gitosis need more than 1 value to unpack
  • 2 Solutions collect form web for “Using git-remote-hg on windows”

    I got this to work today on Windows. Basically, since the msysgit distributions have no Python support, I took Felipe’s git-remote-hg.py file and used py2exe to package it up as an executable. Afterwards, I put all of the py2exe output into the ‘libexec’ folder under my Git installation directory, and it works.

    For it to work, you need:

    1. Python 2.7
    2. The Mercurial Python module (windows installers here)
    3. py2exe (windows installers here)
    4. Felipe’s git-remote-hg python script (save raw to file here)

    Create a file named setup.py that contains:

    from distutils.core import setup
    import py2exe
    
    setup(console=['git-remote-hg.py'])
    

    Save the file to your file system and run the following command:

    python setup.py py2exe --include mercurial    
    

    py2exe will produce a folder called ‘dist’ that contains the output. Copy the contents of that folder into the libexec\git-core folder under your main Git installation folder (e.g., C:\Program Files(x86)\Git).

    Now, you should be able to clone from a Mercurial repo using the Git client.

    (Note: I wrote these steps in a bit of a hurry, so please post back if I’ve left out anything).

    I will have to investigate a bit further, but this looks like git-remote-hg might depend on a particular version of Mercurial being installed. In particular one in which the repo object supports the capable method.

    This looks like a bug in git-remote-hg code. Any version of Mercurial new enough to have repoview is also new enough that every kind of repo object should support the capable method. So I’m guessing the object that has the problem is one being created by git-remote-hg.

    Anyway, it’s quite apparent that git-remote-hg uses the Mercurial Python code to do it’s work. So there is a dependency between them.

    Also, your backtrace does not match the code at https://github.com/felipec/git/blob/fc/remote/hg/contrib/remote-helpers/git-remote-hg, and so it’s difficult to debug your setup.

    Git Baby is a git and github fan, let's start git clone.