Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Converting Mercurial folder to a Git repository

Tags:

git

mercurial

I don't have a huge experience with Mercurial, I'm mostly a Git guy.

I would love to mirror a specific Mercurial folder/file in a git Repository. What I'm actually trying to do is to export the history of a file from a Mercurial repository to Git and being able to keep this in sync with future commits.

Do you have any suggestion on how to proceed? I believe that the way to go should be to get the history of the Mercurial patch, periodically export every single commit as a patch and apply the Mercurial patches to the Git repository.

like image 915
Simone Carletti Avatar asked May 22 '12 21:05

Simone Carletti


2 Answers

On Linux or anything with bash/sh or similar, or python, try with fast export:

cd git clone git://repo.or.cz/fast-export.git git init git_repo cd git_repo ~/fast-export/hg-fast-export.sh -r /path/to/old/mercurial_repo git checkout HEAD 
like image 143
Yohann Avatar answered Sep 22 '22 20:09

Yohann


Windows: TortoiseHG Hg-Git extension

Hg-Git can be used to convert a Mercurial repository to Git. You can use a local repository or a remote repository accessed via SSH, HTTP or HTTPS.

Example of local repositories conversion.

  1. Install Hg-Git.

    • On Windows, TortoiseHg comes with Hg-Git, though you need to enable it via the setting tool (in extensions section)

      TortoiseHg Settings

      or manually in ~/mercurial.ini

      [extensions] hggit = 
  2. Use the following commands to convert the repository:

    $ mkdir git-repo; cd git-repo; git init; cd .. $ cd hg-repo $ hg bookmarks hg $ hg push ../git-repo 

The hg bookmark is necessary to prevent problems as otherwise hg-git pushes to the currently checked out branch confusing Git. This will create a branch named hg in the Git repository. To get the changes in master use the following commands (only necessary in the first run, later just use git merge or rebase):

$ cd git-repo $ git checkout -b master hg 
like image 40
naXa Avatar answered Sep 23 '22 20:09

naXa