Converter um check-out SVN para uso git (git-svn)
-
05-07-2019 - |
Pergunta
Eu trabalho com o software que é mantido no SVN para controle de versão. Eu gostaria de usar git (git-svn) no entanto, o software exige muita instalação e configuração antes que possa ser usado. Existem ferramentas que cuidam de toda a instalação, incluindo a verificação para fora todo o código via SVN.
Toda a documentação para git-svn (Eu tenho sido capaz de encontrar) requer um novo check-out, usando git-svn.
Existe uma maneira de converter um svn checkout existente para que ele possa usar git-svn?
Solução
Você poderia fazer algo parecido com isto:
- Faça um clone completo de sua árvore SVN usando git-svn, para um diretório temporário. Certifique-se de usar a exata mesma revisão que o seu check-out existente.
- Mova a pasta ".git" a partir do nível superior do git checkout-svn para o nível superior do check-out SVN.
- Em seguida, você quer necessidade de contar Git para ignorar os "Svn" diretórios, ou você pode excluí-los todos.
- Exclua o git checkout-svn.
- Não, agora você pode manipular seus arquivos existentes com Git e git-svn.
- Faça um "git status" e espero que ele diz que não há alterações.
Outras dicas
No. Um clone git-svn converte todo o repositório para git. checkouts do SVN não tem todo o repositório e por isso não pode ser clonado a partir. Esta é a principal vantagem de comutação do SVN ou CVS para um sistema distribuído (como git).
Eu suponho que você provavelmente vai querer manter a história. No entanto, no caso de você (ou qualquer outra pessoa que tropeça nesta página) não precisa de história, você pode usar o recurso de "exportação" como explicado aqui: https://stackoverflow.com/a/419475/2437521 .
Outra maneira de fazer isso, que não altera a cópia de trabalho do Subversion original e não exigem que você copiá-lo, está usando um patch:
- Faça um clone completo de sua árvore Subversion usando git-svn, para um novo diretório que será o repositório Git. Certifique-se de usar exatamente a mesma revisão que o seu check-out existente. Você pode usar
git reset --hard :/r<revision>
para forçá-lo a ser o mesmo de revisão após a clonagem, onde<revision>
é a revisão que a cópia de trabalho do Subversion é atualizado para (ver isso usandosvn info
lá). -
cd
a sua cópia de trabalho do Subversion. - Use
svn status
para se certificar de todos os novos arquivos são marcados comA
(ou usosvn add
adicioná-los), e todos os arquivos apagados são marcados comD
(ou usosvn rm
para excluí-los). - Executar
svn diff >patch.diff
para criar um arquivo de patch. - Copiar
patch.diff
ao topo do repositório Git criado antes. -
cd
ao topo do repositório Git criado antes. - Executar
git apply -p0 patch.diff
para aplicar o patch na árvore de trabalho do repositório Git.
Agora você pode percorrer as alterações usando git status
e git add
/ git commit
-los para salvá-los em seu repositório local.