108

I've been developing a java application using git as source code repository. I'd like to share the project with other java developers and hg seems to be most used by them.

My question is how do I convert a git repository to hg?

If I tried googling "convert git to hg" and every search hit is about converting from hg to git. I'm also using TortoiseHg.

3
  • 16
    If you need to convert from mercurial to git instead: stackoverflow.com/questions/883452/… Commented Dec 15, 2009 at 15:27
  • That last paragraph does not make sense. A typo? Commented Jun 16, 2012 at 9:04
  • 1
    @Tshepang: I wanted "git -> hg" but got "hg -> git". I'll edit this question but I guess people got it anyway since there are answers now. Commented Jun 18, 2012 at 6:18

9 Answers 9

83

The hg convert utility isn't on by default after installation. In order to set it as such add the following to your .hgrc file.

[extensions] hgext.convert= 

If you're using TortoiseHg on Windows then this file resides in your home directory as mercurial.ini. After this setting change you will be able to use the hg convert utility.

Sign up to request clarification or add additional context in comments.

3 Comments

On Ubuntu the system wide change can be made at /etc/mercurial/hgrc
On Windows, using TortoiseHg, it can be enabled by using the Global Settings menu item from the TortoiseHg shell extension menu in the Extensions section under Global Settings.
The description is somewhat incomplete as it doesn't specify that hg will need access to git for the conversion or else you get the error "cannot find required "git" tool".
42

By using the Mercurial Convert extension

Add the following lines to your .hgrc or to enable the extension :

[extensions] hgext.convert= 

And typing a

cd src hg convert --datesort . dst 

(even though it can lead to some issues...)

Note:: metrix reports that this might not work:

 hg convert --datesort src dst 

Note: there happens to be a bug with hg convert if you perform this command from a directory other than the source directory.
You will get the following error:

abort: cannot read tags from git-repo4/.git 

Confirmed with git 1.7.9 and Mercurial 2.6.2 on Windows XP

1 Comment

If that answer included the .hgrcsetup instead of linking to it it would be comprehensive.
17

You may want to look at the http://hg-git.github.com/ utility: a Git plugin for Mercurial

This plugin is originally developped by the guys of GitHub, and allows the convert from git<->mercurial losslessly. In theory, you could even be able to clone the hg repository.

3 Comments

This is a better solution than converting the repository. It would be a better answer too, if it had more detail. One line answers are next to useless.
@naught101, thanks for the suggestion, I've added some more info here to read directly.
after you install & set up hg-git use hg gexport & hg gimport to convert between them.
9

Distributed revision control with Mercurial states:

The revision control tools supported by convert are as follows:

  • Subversion
  • CVS
  • Git
  • Darcs

So maybe you don’t need any additional tool?

1 Comment

Unfortunately "hg convert" is not available in tortoisehg
6

The convert extension may work for you, but if it doesn't, you might want to check out tailor which is a general purpose tool for converting among the various distributed SCMs.

Comments

2

You could just not convert it at all. Just use the Hg-Git plugin! No one will know the difference.

Comments

2

New player in town: git-remote-hg. It provides native bridging support in git.

Just:

hg init ../hgrepo git push hg::$PWD/../hgrepo 

Comments

1

In the Git folder with all my Git repositories I created the Git2Hg.cmd file with the following content:

set PATH=%PATH%;C:\Program Files\TortoiseHg set PATH=%PATH%;C:\Program Files\Git\bin hg convert %1 

Now I can convert a Git repository to Hg by typing this in a CMD:

Git2Hg "Folder Name" 

Comments

0

Hg-Git Plugin or if u use for windows or migration from one to another visit here 2[Windows GIT]

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.