Mercurial Hg-Git: Clone from a local directory?

2020-06-16 02:00发布

问题:

I have a local Git repository on my computer that I am trying to clone with Hg-Git. It works fine for me when I'm cloning from a git:// type path, but not if I try to clone from local directories.

Here is an example...

hg clone "C:\Users\James\Documents\My Games\FalloutNV"
destination directory: FalloutNV
importing Hg objects into Git
abort: The system cannot find the file specified

The path does exist, and somehow it knows that it's a Git repo, but it has the direction backwards. It should be importing Git objects into a (new) Hg repo.

Any ideas? I am on Windows, trying to use TortoiseHg but comfortable enough in the command line.


Update

Tonight I discovered that if I rename FalloutNV to FalloutNV.git ... the clone will magically work from the local disk. Just a pointer that may help!

回答1:

This is strange since that error message is usually associated with Hg-Git (the dulwich part of it) not finding your ssh key.

That is why manojlds suggested cloning using explicitly the file protocol (except I would use "file:///C:/Users/James/Documents/My Games/FalloutNV" with 3 "/" at the beginning instead of two).

The "A guide to getting the hg-git Mercurial plugin to work on a Windows machine" confirms the ssh issue:

If you’re getting an error like “abort: The system cannot find the file specified”, then dulwich cannot find ssh in your PATH.
You need to make sure to install Cygwin’s OpenSSH and that you can run “ssh” from the command line. (and it also recommend you get the latest version of the dulwich library)


The OP jocull adds in the comment:

Fun fact: Tonight I discovered that if I rename "FalloutNV" to "FalloutNV.git" ... the clone will magically work from the local disk.

And that is similar to the Git protocols page, where every path of a local Git repo ends with .git.