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 .

Spoike
fonte
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.

Spoike
fonte
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

VonC
fonte
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.

vdboor
fonte
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
9

Controle de revisão distribuída com estados Mercurial :

As ferramentas de controle de revisão suportadas pelo convert são as seguintes:

  • Subversão
  • CVS
  • Git
  • Darcs

Então, talvez você não precise de nenhuma ferramenta adicional?

Bombe
fonte
1
Infelizmente, "hg convert" não está disponível em tortoisehg
Spoike
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.

Luke Francl
fonte
2

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

Jay Atkinson
fonte
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
FelipeC
fonte
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"
stenci
fonte
0

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

Dilshad
fonte