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?

Foi útil?

Solução

Você poderia fazer algo parecido com isto:

  1. 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.
  2. Mova a pasta ".git" a partir do nível superior do git checkout-svn para o nível superior do check-out SVN.
  3. Em seguida, você quer necessidade de contar Git para ignorar os "Svn" diretórios, ou você pode excluí-los todos.
  4. Exclua o git checkout-svn.
  5. Não, agora você pode manipular seus arquivos existentes com Git e git-svn.
  6. 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:

  1. 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 usando svn info lá).
  2. cd a sua cópia de trabalho do Subversion.
  3. Use svn status para se certificar de todos os novos arquivos são marcados com A (ou uso svn add adicioná-los), e todos os arquivos apagados são marcados com D (ou uso svn rm para excluí-los).
  4. Executar svn diff >patch.diff para criar um arquivo de patch.
  5. Copiar patch.diff ao topo do repositório Git criado antes.
  6. cd ao topo do repositório Git criado antes.
  7. 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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top