Migrar Mercurial para Git


#1

Bom dia pessoal tudo bem?

Gostaria de saber se vocês já iniciaram ou para quando pretendem migrar do Mercurial para o Git?

Em função do bitbucket encerrar o suporte ao Mercurial… poderiamos montar um pequeno passo a passo caso alguém já tenha feito…

Abraços


#2

Olá Geizon,

A migração para git já foi feita.
https://bitbucket.org/AdempiereLBR/adempierelbr/

Nós disponibilizamos um script em docker para fazer a migração:
https://hub.docker.com/repository/docker/ralexsander/hg-git-migration

Att.


#3

Bom dia Ricardo!

Bacana, vou dar uma olhada no seu script!

Alguma recomendação/cuidado na utilização?

Abraços


#4

Boa tarde Ricardo,

Estava olhando o script…ele diz para colocar todo código Mercurial em uma pasta temporária…sou iniciante nisso, minha dúvida é: coloco os três projetos adempiere360lts, adempierelbr e o meu próprio ou coloco somente o meu próprio?

E após rodar o script, dai devo substituir e fazer o commit para o novo repositório ou como fica essa parte?

Att


#5

Boa tarde!

Você cria uma pasta e coloca todos os projetos que quer migrar de Mercurial para Git. No caso do Adempiere e LBR é recomendado você fazer um clone novamente, mas se você tiver customizações e quiser migrar, coloque-os também nesta pasta.

Depois de migrado você vai ter seu SCM ao invés de Mercurial em Git, ai segue a rotina normal, fazer o push no seu servidor, na nuvem, etc.

Att.


#6

Obrigado Ricardo!

Não tenho customizações no Adempiere e LBR.

Vou ir tentando qualquer coisa peço socorro aqui!

Abraços


#7

Outra dúvida Ricardo!

Pra ver se entendi bem essa regra de mudanças do BitBucket…agora em 01/02/2020 não vai ser mais permitido a criação de novos repositórios… mas caso eu resolva migrar para Git após essa data, eu teria ate final de maio para fazer a migração…até essa data as funcionalidades em Mercurial vão estar funcionando, correto?

Até final de maio poderia continuar comitando, etc no meu repositório de trabalho?!


#8

Exato, mas é sempre bom migrar com antecedência.


#9

Ricardo,

Outra dúvida, esse script em docker, funciona apenas no linux?

Tentei no Windows e não consegui, mas também pode ser algo que eu esteja fazendo errado…primeira vez que estou utilizando Docker.

Abraço


#10

Deve funcionar em Windows também, aqui eu não tenho Windows, só testei em Mac OS e Linux, mas o docker funciona em Windows também.


#11

Certo…pergunto pq quando rodei ele apareceu algo no terminal como se estivesse buscando um script linux…mas vou fazer alguns testes…

outra dúvida…tenho copiar somente a pasta .hg ou todo o pacote do projeto e largar na pasta temporaria?

Tentei executar da seguinte forma o primeiro comando:

docker run --volume c:\tmp\mercurial:/hg-repositories --volume c:\tmp\git:/git-repositories ralexsander/hg-git-migration prepare


#12

Dá uma olhada na documentação docker de como vc deve montar os volumes. Acho que deve colocar a barra invertida:

C:/tmp/mercurial

Dentro da pasta mercurial deve ter os seus projetos como um todo, não só a pasta .hg


#13

Bom dia Ricardo,

Esse script ele vai converter todas as minhas branches e manter históricos de alteração?

Att


#14

Sim, o script converte todo histórico, branches, tags, etc.


#16

Boa noite Ricardo, tudo bem?

Seguinte, fiz os procedimentos, porém os arquivos convertidos não estão gerando…no console/log ate aparece como criados, porem a pasta fica vazia,… o unico erro que notei no log foi:

Loaded 20 authors
Loaded 86 branches
Loaded 1 tags
not trusting file /hg-repositories/adempierefrk/.hg/hgrc from untrusted user 1000, group 1000
Error: repository has at least one unnamed head: hg r1262

o final do arquivo do log contém:

git-fast-import statistics:

Alloc’d objects: 30000
Total objects: 25043 ( 23307 duplicates )
blobs : 6926 ( 15394 duplicates 5590 deltas of 6556 attempts)
trees : 15597 ( 7913 duplicates 8761 deltas of 14832 attempts)
commits: 2520 ( 0 duplicates 0 deltas of 0 attempts)
tags : 0 ( 0 duplicates 0 deltas of 0 attempts)
Total branches: 86 ( 198 loads )
marks: 1048576 ( 2520 unique )
atoms: 2359
Memory total: 3579 KiB
pools: 2173 KiB
objects: 1406 KiB

pack_report: getpagesize() = 4096
pack_report: core.packedGitWindowSize = 1073741824
pack_report: core.packedGitLimit = 8589934592
pack_report: pack_used_ctr = 29420
pack_report: pack_mmap_calls = 5336
pack_report: pack_open_windows = 1 / 1
pack_report: pack_mapped = 92921663 / 92921663

sabe o que pode ser? obrigado desde já!


#17

Bom dia!!

Na verdade chegou a gerar algumas pastas .git queria saber se é isso mesmo? se devo pegar manualmente elas e substituir dai na minha workspace? Ou o processo do script ja gera o projeto completo com as classes e os arquivos git?


#18

Provavelmente teve algum erro na revisão 1262.
Você pode corrigi-lo criando uma branch para a revisão 1262.

Na pasta do projeto convertido vc pode usar o comando: git checkout master para verificar se está tudo OK.


#19

Certo, mas como perguntei ali…quando executa o script…na pasta destino “git” ja cria a workspace pronta com as classes, controle git etc? ou ele gera somente os git?


#20

Não sei se entendi a sua pergunta.

Atualmente você tem os seus projetos em mercurial, o mercurial mantém o controle dos arquivos na pasta .hg/. O script vai converter de mercurial para git, que mantém o controle numa pasta .git/.

Após a conversão você vai ver em cada projeto somente a pasta oculta .git/, para que carregue os arquivos di seu projeto você deve executar o comando que eu coloquei no meu comentário anterior. No git a branch padrão é a master, no mercurial era default.


#21

Ah bom…agora to começando entender melhor…tipo… como eu coloquei todo meu projeto em uma pasta para converter… eu achava que executando o script ele me geraria toda a estrutura igual (incluindo as classes java) pronto para importar a “workspace” no Eclipse novamente já com controle em git…

Mas se é como você falou ali de que gera somente as pastas ocultas .git vou seguir o que você falou com o comando e ver o que acontece e qualquer coisa aviso aqui…

Obrigado desde já!