Pré-requisitos
Para seguir estas etapas, você precisa usar um sistema macOS ou Linux e ter as seguintes ferramentas instaladas:
- Subversion
- Git, incluindo
git-svn
- Git Large File Storage (Git LFS) (confira "Instalar o Git Large File Storage")
Como importar um repositório do Subversion
-
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. Para obter mais informações, confira "Criar um repositório".
-
Para confirmar se o Git está instalado no computador, execute
git --version.
A saída será parecida com
git version 2.40.0
. -
Para confirmar se o
git svn
está disponível no computador, executegit 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 executargit svn
, talvez seja necessário instalargit svn
separadamente. Recomendamos usar o Homebrew ou o registro de pacote do Ubuntu, que incluem pacotesgit-svn
. -
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)
. -
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. -
Acesse o diretório do repositório do Subversion.
-
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
svn log -q | grep -e '^r' | awk 'BEGIN { FS = "|" } ; { print $2" = "$2 }' | sed 's/^[ \t]*//' | sort | uniq > authors.txt
-
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>
-
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
, substituindoURL
pela URL do repositório do Subversion,PATH/TO/DESTINATION
pelo caminho para o diretório no qual você deseja clonar o repositório ePATH/TO/AUTHORS.TXT
pelo caminho para o arquivoauthors.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.
-
-
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
. -
Acesse o diretório do repositório Git recém-criado.
-
Para adicionar o repositório GitHub como um repositório remoto, execute
git remote add origin URL
, substituindoURL
pela URL do repositório GitHub criado anteriormente, comohttps://github.com/octocat/example-repository.git
. -
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, poderá ocorrer uma falha no push. Mova os arquivos grandes para o Git LFS executando
git lfs import
e tente novamente.