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 . 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 o push do projeto para o . Para saber mais, 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 (; 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 <[email protected]>
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 como um repositório remoto, execute
git remote add origin URL
, substituindoURL
pela URL do repositório criado anteriormente, comohttps://.com/octocat/example-repository.git
.Para efetuar push do repositório para o , execute
git push --mirror origin
.Se o repositório contiver arquivos maiores que o limite de tamanho do arquivo do , poderá ocorrer uma falha no push. Mova os arquivos grandes para o Git LFS executando
git lfs import
e tente novamente.