Como faço para converter um repositório git em mercurial?


104

Estou desenvolvendo um aplicativo java usando git como repositório de código-fonte. Eu gostaria de compartilhar o projeto com outros desenvolvedores java e hg parece ser o mais usado por eles.

Minha pergunta é como faço para converter um repositório git para hg?

Se eu tentasse pesquisar "converter git em hg" no Google e cada resultado de pesquisa fosse sobre a conversão de hg para git. Também estou usando o TortoiseHg .


16
Se você precisar converter de mercurial para git: stackoverflow.com/questions/883452/…
Christian Oudard

Esse último parágrafo não faz sentido. Um erro de digitação?
tshepang

1
@Tshepang: Eu queria "git -> hg", mas obtive "hg -> git". Vou editar essa pergunta, mas acho que as pessoas entenderam mesmo assim, já que agora há respostas.
Spoike de

Respostas:


79

O hg convertutilitário não está ativado por padrão após a instalação. A fim de defini-lo como tal, adicione o seguinte ao seu .hgrcarquivo.

[extensions]
hgext.convert=

Se você estiver usando TortoiseHg no Windows, este arquivo reside em seu diretório inicial como mercurial.ini. Após essa alteração de configuração, você poderá usar o hg convertutilitário.


5
No Ubuntu, a mudança em todo o sistema pode ser feita em / etc / mercurial / hgrc
Sentient

1
No Windows, usando o TortoiseHg, pode ser habilitado usando o item de menu Configurações Globais do menu de extensão do shell do TortoiseHg na seção Extensões em Configurações Globais.
Umar Farooq Khawaja

A descrição está um tanto incompleta, pois não especifica que o hg precisará de acesso ao git para a conversão ou então você obterá o erro "não foi possível encontrar a ferramenta" git necessária ".
jmd de

41

Usando a extensão Mercurial Convert

Adicione as seguintes linhas ao seu .hgrcou para ativar a extensão:

[extensions]
hgext.convert=

E digitando um

cd src
hg convert --datesort . dst

(embora possa levar a alguns problemas ...)

Observação :: metrix relata que isso pode não funcionar:

     hg convert --datesort src dst

Nota: acontece que há um bug com hg convertse você executar este comando de um diretório diferente do diretório de origem.
Você obterá o seguinte erro:

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

Confirmado com git 1.7.9 e Mercurial 2.6.2 no Windows XP


Se essa resposta incluísse a .hgrcconfiguração em vez de vincular a ela, seria abrangente.
fbmd

17

Você pode querer dar uma olhada no utilitário http://hg-git.github.com/ : um plugin Git para Mercurial

Este plugin foi originalmente desenvolvido pelos caras do GitHub e permite a conversão do git <-> mercurial sem perdas. Em teoria, você poderia até clonar o repositório hg.


2
Esta é uma solução melhor do que converter o repositório. Seria uma resposta melhor também, se tivesse mais detalhes. Respostas de uma linha são quase inúteis.
naught101

1
@ naught101, obrigado pela sugestão, adicionei mais algumas informações aqui para ler diretamente.
vdboor

depois de instalar e configurar o hg-git, use hg gexport e hg gimport para converter entre eles.
CAD cara


6

A extensão convert pode funcionar para você, mas se não funcionar, você pode querer verificar o alfaiate, que é uma ferramenta de propósito geral para conversão entre os vários SCMs distribuídos.


2

Você simplesmente não poderia convertê-lo. Basta usar o plugin Hg-Git ! Ninguém saberá a diferença.


2

Novo jogador na cidade: git-remote-hg . Ele fornece suporte de bridging nativo no git.

Somente:

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

1

Na Gitpasta com todos os meus repositórios Git, criei o Git2Hg.cmdarquivo com o seguinte conteúdo:

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

Agora posso converter um repositório Git em Hg digitando em um CMD:

Git2Hg "Folder Name"

0

Plugin Hg-Git ou se você usar para windows ou migração de um para outro visite aqui 2 [Windows GIT]

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.