I'm trying to use the hg-git Mercurial extension on Windows (Windows 7 64-bit, to be specific). I have Mercurial and Git installed. I have Python 2.5 (32-bit) installed.
I followed the instructions on http://hg-git.github.com/ to install the extension. The initial easy_install failed because it was unable to compile dulwich without Visual Studio 2003.
I installed dulwich manually by:
- git clone git://git.samba.org/jelmer/dulwich.git
- cd dulwich
- c:\Python25\python setup.py --pure install
Now when I run easy_install hg-git, it succeeds (since the dulwich dependency is satisfied).
In my C:\Users\username\Mercurial.ini, I have:
[extensions]
hgext.bookmarks =
hggit =
When I type 'hg' at a command prompt, I see: "*** failed to import extension hggit: No module named hggit"
Looking under my c:\Python25 folder, the only reference to hggit I see is Lib\site-packages\hg_git-0.2.1-py2.5.egg
. Is this supposed to be extracted somewhere, or should it work as-is?
Since that failed, I attempted the "more involved" instructions from the hg-git page that suggested cloning git://github.com/schacon/hg-git.git and referencing the path in my Mercurial configuration. I cloned the repo, and changed my extensions file to look like:
[extensions]
hgext.bookmarks =
hggit = c:\code\hg-git\hggit
Now when I run hg, I see: *** failed to import extension hggit from c:\code\hg-git\hggit: No module named dulwich.errors.
Ok, so that tells me that it is finding hggit now, because I can see in hg-git\hggit\git_handler.py that it calls
from dulwich.errors import HangupException
That makes me think dulwich is not installed correctly, or not in the path.
Update:
From Python command line:
import dulwich
yields Import Error: No module named dulwich
However, under C:\Python25\Lib\site-packages, I do have a dulwich-0.5.0-py2.5.egg folder which appears to be populated. This was created by the steps mentioned above. Is there an additional step I need to take to make it part of the Python "path"?
From Python command line (as suggested in one of the answers):
import pkg_resources
pkg_resources.require('dulwich')
yields [dulwich 0.5.0 (c:\python25\lib\site-packages\dulwich-0.5.0-py2.5.egg)]
So what does that tell me? Importing dulwich fails, but apparently pkg_resources can find it. What can I do with that information?
Until you get
import dulwich
to work,hggit
won't work. Check that thedulwich
egg file is in youreasy-install.pth
file undersite-packages
.For further debugging you can try ask
pkg_resources
about it:If you can install TortoiseHg, it includes dulwich and other requirements.
I found a simpler solution at http://candidcode.com/2010/01/12/a-guide-to-converting-from-mercurial-hg-to-git-on-a-windows-client/
And then I found a yet simpler solution myself:
To use the hg-git Mercurial extension on Windows:
To have SSH support you need plink.exe from PuTTY family. After that you should add the following to Mercurial.ini:
When connecting to a SSH server for the first time, you should start putty.exe and try to connect using it. It will add the server key fingerprint to the registry. Otherwise plink will ask you to accept the fingerprint but it doesn't accept any input.
You can use puttygen.exe to generate private keys. Either use keys without a passphrase or use Pageant.exe ssh authentication agent.
Try following configuration (change to your path), which works for me:
In my case when I have empty value for
hggit =
, I get the same error as you do in this case. But I canimport dulwich
without problem in python shell, so you should check youreasy-install.pth
(as pointed out by David) if it containsdulwich-0.5.0-py2.5.egg
. I did install pure version ofdulwich
as well.Based on techtonik's explanation of the reason for the failing import of
dulwich.errors
, I found a solution which appears simpler to me than the already proposed ones:On the Mercurial download page there is offered
and
as .EXE files which install Mercurial as a Python module into an existing Python 2.7 (x86 or x64) installation.
If hg-git and dulwich have been installed to this Python installation as well, the import errors should vanish.
If you are not sure what to do now, I hope this step-by-step explanation helps:
Prerequisites
<python 2.7 install dir>
and<python 2.7 install dir>\Scripts
are in thePATH
environment variableSteps
Now
hg clone <some git repo>
should work on the console.Success!