Mudando de Mercurial para GIT no Atlassian Bitbucket com salvando arquivos em cirílico

Antecedentes


No verão, uma postagem oficial do blog foi publicada no blog oficial do BitBucket, anunciando o fim do suporte aos repositórios do Mercurial.

A descontinuação do Mercurial ocorrerá em duas etapas:

  1. A partir de 1º de fevereiro de 2020, os usuários não poderão mais criar novos repositórios.
  2. A partir de 1º de junho de 2020, os usuários não poderão usar as funções do Mercurial no Bitbucket ou por meio de sua API, e todos os repositórios do Mercurial serão excluídos.

Os motivos dessa decisão são mais ou menos claros, mas no meu trabalho eu uso vários repositórios no Mercurial (sempre gostei mais do Mercurial, mas deixarei essa questão fora do escopo deste artigo), que eu precisava converter para o GIT.

Na verdade, este lugar começou ...

O problema


Os desenvolvedores e o serviço de suporte do BitBucket ofereceram várias opções para essa conversão; tentei todas elas e, ao mesmo tempo, ferramentas de terceiros, como importar repositórios para o GitHub.

Verificou-se que todas essas ferramentas estragam os nomes de arquivos e diretórios que contêm caracteres no alfabeto cirílico, e eu tenho muitos desses arquivos (TK, especificações e outros arquivos similares). É engraçado que os comentários contendo cirílico sejam bem tolerados e exibidos após a migração.

Encontrei informações na Internet de que existem ferramentas no Mercurial (chaves no arquivo de configuração do repositório) que permitem controlar a codificação de caracteres padrão, mas, em primeiro lugar, elas são incluídas apenas explicitamente e, em segundo lugar, não há ferramenta para converter o repositório existente . Bem, não verifiquei como essa opção ajuda na migração usando ferramentas prontas - é muito tarde para eu seguir esse caminho.

Não havia desejo de procurar manualmente por arquivos com problemas e fazer o reabastecimento manual, então tive que procurar um pouco e encontrar uma solução.

Talvez a transferência de um repositório com caracteres russos em nomes de arquivos também seja relevante para alguém, e meu artigo economizará um pouco de tempo.

Solução


Procedimento básico


  1. Escolha o repositório git@github.com: seewindcn / tortoisehg.git - ele possui um plug-in fixutf8 que não está na distribuição principal. Supõe-se ainda que a cópia local estará localizada no diretório D: \ Development \ tortoisehg
  2. Faça uma cópia do seu repositório Mercurial para não danificar o local principal. Além disso, todos os comandos são executados no diretório de cópia.
  3. Corrija os nomes de arquivos e diretórios com o comando D: \ Development \ tortoisehg \ hg.exe addremove -s 100
  4. Confirmar no repositório D: \ Development \ tortoisehg \ hg.exe commit -m "Corrigir nomes de arquivos"
  5. Ligue o plug-in hggit - no arquivo .hg \ hgrc você precisa adicionar
    [extensões]
    hggit =
  6. Preparando-se para converter em GIT - crie um rótulo mestre com o comando D: \ Development \ tortoisehg \ hg.exe bookmark -r default master
  7. Crie um repositório GIT no BitBucket
  8. Nos comprometemos com o repositório hg push git + ssh: //git@bitbucket.org: <user> / <reponame> .git ( note , isso usa hg regular porque o clone do seewindcn não deseja trabalhar no SSH)
  9. Verificamos no site da BitBucket, verifique se os nomes dos arquivos cirílicos não quebram
  10. Clonamos o repositório GIT para nós mesmos, verificamos os nomes dos arquivos, realizamos uma comparação de bytes de todos os arquivos, construímos o projeto, testamos
  11. Após a compilação, provavelmente haverá uma tonelada de novos arquivos que o GIT sugerirá confirmar. O arquivo .hgignore terá que ser convertido em .gitignore manualmente. Felizmente, você pode fazer isso uma vez e usar um arquivo para todos os outros repositórios.

Como resultado, conseguimos transferir a principal ramificação padrão do repositório Mercurial original com todo o histórico de confirmações para o mestre do repositório GIT e até mesmo com rótulos. Das desvantagens, observo apenas a completa falta de informações sobre alterações nos arquivos com o alfabeto cirílico no histórico de confirmações - existem confirmações e nem sequer há referências a arquivos com o alfabeto cirílico (o restante dos arquivos, é claro, está em perfeita ordem).

Em geral, a tarefa pode ser considerada concluída, mas por interesse esportivo, também foi interessante para mim transferir os ramos restantes.

Quebra de ramificação, exceto o padrão


  1. Obter uma lista de filiais hg branches
  2. Para cada ramo
    1. Alterne para hg up <branchname> branch
    2. Crie um rótulo (o nome do rótulo não deve corresponder ao nome da ramificação): marcador de hg -r <hgbranchname> <gitbranchname>
    3. Despeje a ramificação no GIT hg push git@bitbucket.org: <user> / <reponame> .git

Pode acontecer que o nome da ramificação também contenha o alfabeto cirílico; nesse caso, as ramificações hg mostrarão krakozyabry. Nesse caso, usei um ambiente de trabalho visual hg - troquei para um ramo e criei um rótulo lá.

Nesse ponto, vem o Feng Shui completo.

Caso alguém esteja interessado em ir mais fundo, deixo ...

Lista de referências


Source: https://habr.com/ru/post/pt483454/


All Articles