Skip to main content

Como importar um repositório do Subversion

Você pode importar um repositório do Subversion convertendo o repositório no Git e efetuando push do repositório Git para o GitHub Enterprise Cloud.

Pré-requisitos

Para seguir estas etapas, você precisa usar um sistema macOS ou Linux e ter as seguintes ferramentas instaladas:

Como importar um repositório do Subversion

  1. Crie um novo repositório em GitHub. Para evitar erros, não inicialize o novo repositório com arquivos LEIAME, de licença ou gitignore. É possível adicionar esses arquivos após push do projeto no GitHub Enterprise Cloud. Para obter mais informações, confira "Criar um repositório".

  2. Para confirmar se o Git está instalado no computador, execute git --version.

    A saída será parecida com git version 2.40.0.

  3. Para confirmar se o git svn está disponível no computador, execute git svn --version.

    A saída será semelhante a git-svn version 2.40.0 (svn 1.14.2).

    Se você puder executar git com sucesso, mas encontrar um erro ao executar git svn, talvez seja necessário instalar git svn separadamente. Recomendamos usar o Homebrew ou o registro de pacote do Ubuntu, que incluem pacotes git-svn.

  4. Para confirmar se o Git LFS está instalado no computador, execute git lfs --version.

    A saída será parecida com git-lfs/3.1.4 (GitHub; darwin arm64; go 1.18.1).

  5. Faça check-out do repositório do Subversion.

    Por exemplo, para fazer check-out do projeto de código aberto do Logisim, execute svn checkout https://svn.code.sf.net/p/circuit/code/trunk no Sourceforge.

  6. Acesse o diretório do repositório do Subversion.

  7. Para ver uma lista de autores no seu projeto do Subversion e armazená-la em authors.txt, execute o seguinte script:

    Shell
    svn log -q | grep -e '^r' | awk 'BEGIN { FS = "|" } ; { print $2" = "$2 }' | sed 's/^[ \t]*//' | sort | uniq > authors.txt
    
  8. Atualize o arquivo authors.txt, mapeando o nome do autor usado no repositório do Subversion para o nome que você deseja usar no repositório Git, com o seguinte formato:

    octocat = The Octocat <octocat@github.com>
    
  9. Para converter o repositório do Subversion em um repositório Git, use git svn.

    • Se o repositório do Subversion tiver um formato padrão, com pastas “tronco”, “branches” e “tags”, execute git svn clone -s URL PATH/TO/DESTINATION --authors-file PATH/TO/AUTHORS.TXT, substituindo URL pela URL do repositório do Subversion, PATH/TO/DESTINATION pelo caminho para o diretório no qual você deseja clonar o repositório e PATH/TO/AUTHORS.TXT pelo caminho para o arquivo authors.txt.

      Por exemplo, para clonar o projeto do Logisim do Sourceforge para um diretório chamado logisim, execute git svn clone -s https://svn.code.sf.net/p/circuit/code logisim --authors-file path/to/authors.txt.

    • Se o repositório do Subversion não for padrão, personalize git svn para administrar o repositório. Para obter mais informações, confira git-svn na documentação do Git.

  10. O Git fará check-out de cada revisão do SVN e transformará a revisão em um Git commit. Se o seu repositório tiver muitos arquivos ou um histórico grande, esse processo levará muito tempo.

    Para repositórios grandes, o comando poderá congelar. Nesse caso, você pode começar onde terminou encerrando o comando com CTRL+C, acessando o novo diretório e executando git svn fetch.

  11. Acesse o diretório do repositório Git recém-criado.

  12. Para adicionar o repositório GitHub como um repositório remoto, execute git remote add origin URL, substituindo URL pela URL do repositório GitHub criado anteriormente, como https://github.com/octocat/example-repository.git.

  13. Para efetuar push do repositório para o GitHub, execute git push --mirror origin.

    Se o repositório contiver arquivos maiores que o limite de tamanho do arquivo do GitHub Enterprise Cloud, poderá ocorrer uma falha no push. Mova os arquivos grandes para o Git LFS executando git lfs import e tente novamente.

Leitura adicional