SubGit (vs Tela Azul da Morte)
subgit import --svn-url url://svn.serv/Bla/Bla directory/path/Local.git.Repo
É tudo.
+ Para atualizar do SVN, um repositório Git criado pelo primeiro comando.
subgit import directory/path/Local.git.Repo
Eu usei uma maneira de migrar para o Git instantaneamente para um repositório enorme.
Claro que você precisa de alguma preparação.
Mas você pode não parar o processo de desenvolvimento.
Aqui está o meu caminho.
Minha solução se parece com:
- Migrar SVN para um repositório Git
- Atualize o repositório Git imediatamente antes da equipe mudar para .
A migração leva muito tempo para um grande repositório SVN.
Mas a atualização da migração concluída é apenas alguns segundos.
Claro que estou usando SubGit , mamãe. git-svn me faz tela azul da morte . Apenas constantemente. E o git-svn está me entediando com o erro fatal " nome do arquivo muito longo " do Git .
PASSOS
1. Baixe o SubGit
2. Prepare os comandos de migração e atualização.
Digamos que façamos isso no Windows (é fácil portar para o Linux).
No diretório bin de instalação do SubGit (subgit-2.XX \ bin), crie dois arquivos .bat.
Conteúdo de um arquivo / comando para a migração:
start subgit import --svn-url url://svn.serv/Bla/Bla directory/path/Local.git.Repo
O comando "start" é opcional aqui (Windows). Ele permitirá ver erros no início e deixou um shell aberto após a conclusão do SubGit.
Você pode adicionar aqui parâmetros adicionais semelhantes ao git-svn . Estou usando apenas --default-domain myCompanyDomain.com para corrigir o domínio do endereço de email dos autores SVN.
Eu tenho a estrutura do repositório SVN padrão (trunk / branches / tags) e não tivemos problemas com o "mapeamento de autores". Então, não estou mais fazendo nada.
(Se você quiser migrar tags como branches ou seu SVN tiver várias pastas de branches / tags, considere usar a abordagem mais detalhada do SubGit )
Dica 1 : use --minimal-revisão YourSvnRevNumber para ver rapidamente como as coisas acontecem (algum tipo de depuração). Especialmente útil é ver nomes ou e-mails de autores resolvidos.
Ou para limitar a profundidade do histórico de migração.
Dica 2 : A migração pode ser interrompida ( Ctrl+ C) e restaurada executando o próximo comando / arquivo de atualização.
Eu não aconselho fazer isso para grandes repositórios. Recebi "Exceção de Java + Windows com falta de memória".
Dica 3 : é melhor criar uma cópia do seu repositório bare de resultados.
Conteúdo de um arquivo / comando para atualização:
start subgit import directory/path/Local.git.Repo
Você pode executá-lo quantas vezes quiser, para obter as confirmações da última equipe no seu repositório Git.
Atenção! Não toque no seu repositório vazio (criação de ramificações, por exemplo).
Você receberá o próximo erro fatal:
Erro irrecuperável: está fora de sincronia e não pode ser sincronizado ... A tradução de revisões do Subversion para o Git confirma ...
3. Execute o primeiro comando / arquivo. Levará muito tempo para um grande repositório. 30 horas para o meu humilde repositório.
É tudo.
Você pode atualizar seu repositório Git a partir do SVN a qualquer momento, executando o segundo arquivo / comando. E antes de mudar sua equipe de desenvolvimento para o Git.
Vai demorar apenas alguns segundos.
Há mais uma tarefa útil.
Envie seu repositório Git local para um repositório Git remoto
É o seu caso? Vamos continuar.
- Configure seus controles remotos
Corre:
$ git remote add origin url://your/repo.git
- Prepare-se para o envio inicial do seu enorme repositório Git local para um repositório remoto
Por padrão, seu Git não pode enviar grandes pedaços.
fatal: A extremidade remota desligou inesperadamente
Vamos correr para isso:
git config --global http.postBuffer 1073741824
524288000 - 500 MB 1073741824 - 1 GB etc.
Corrija seus problemas de certificado local . Se o seu servidor git usa um certificado quebrado.
Eu desativei certificados .
Além disso, seu servidor Git pode ter limitações na quantidade de solicitações que precisam ser corrigidas .
- Envie toda a migração para o repositório Git remoto da equipe.
Execute com um Git local:
git push origin --mirror
( origem do push do git '*: *' para versões antigas do Git)
Se você obtiver o seguinte: error: Impossível gerar o git: Esse arquivo ou diretório não existe ... Para mim, a recreação completa do meu repositório resolve esse erro (30 horas). Você pode tentar os próximos comandos
git push origin --all
git push origin --tags
Ou tente reinstalar o Git ( inútil para mim ). Ou você pode criar ramificações de todas as tags e enviá-las. Ou, ou, ou ...