Comecei a clonar um repositório SVN usando a operação de clone do git-svn. Após cerca de 6 horas de importação (é um grande repositório), meu computador dormiu comigo. Existe uma maneira de retomar a operação sem refazer todo o trabalho inicial?
Comecei a clonar um repositório SVN usando a operação de clone do git-svn. Após cerca de 6 horas de importação (é um grande repositório), meu computador dormiu comigo. Existe uma maneira de retomar a operação sem refazer todo o trabalho inicial?
Respostas:
O git svn fetch
comando para retomar um git svn clone
é confirmado por várias fontes:
(Aliás, se durante a etapa inicial de clonagem sua conexão morrer ou você precisar interrompê-la, para retomar o clone, você só precisa executar o comando acima para retomar o download do histórico).
Parece haver um vazamento de memória
git-svn
. O tamanho dogit-svn
processo cresceu lentamente e depois de cerca de duas semanas ele estava com o tamanho residente de 1,2 GB, ponto em que o sistema operacional se recusou a deixá-lo bifurcar.
Acontece que foi uma bênção disfarçada.
Consegui retomar o clone interrompido com um simples "git svn fetch
", e ele correu muito mais rápido com o heap agora radicalmente menor.
Isso funcionou tão bem, de fato, que adquiri o hábito de interromper e reiniciar o processo todas as noites e todas as manhãs. Alguns dias depois, foi feito.
Você começa suas aventuras
git-svn
clonando um repositório Subversion existente:
git svn clone url://path/to/repo -s
O
-s
sinalizador assume que seu repositório usa a convenção "trunk, branches, tags". Se não, você deve especificar manualmente quais diretórios representam branches e tags, se você quiser que o Git saiba sobre eles.Isso levará muito tempo, pois irá buscar todas as revisões do SVN e submeter localmente. Se por algum motivo ele parar, você pode continuar com
git svn fetch
.
git svn clone
, interrompendo o processo. Correr git svn clone
novamente parecia retomar o clone em andamento. Alguém mais fez isso?
Encontrei uma postagem no blog que forneceu (espero) uma resposta correta.
Aparentemente, a execução git svn fetch
efetivamente conclui a operação de clonagem. Esperança!
git svn rebase
após a busca para completar a operação e ter o branch master refletindo o tronco
Como VonC, CaptainAwesomePants e Archi disseram git svn fetch
que resolve o problema. Eu estava fazendo um git svn clone url... --authors-file=path/to/file
e o clone falhou porque um dos autores não estava no arquivo de autores. Eu adicionei o autor ao arquivo e executei git svn fetch
e ele continuou de onde parou e olhando para o log do git mais tarde, parece que ele usou o autor recém-adicionado para substituir o nome do autor do commit, então tudo foi legal.
Pelo menos a partir do git 2.1.0, você pode retomar apenas reemitindo git svn clone
No entanto, isto irá duplicar algumas entradas no seu .git / config, remova-as e tudo ficará bem
From at least git 2.1.0...
Alguma ideia se esse recurso existia no git 1.9.1?
git svn fetch
causou uma incompatibilidade de soma de verificação para mim - e foi impossível redefinir porque aparentemente não havia HEAD: / - mas isso funciona bem, só tive que remover o svn-remote.fetch
de.git/config
git svn clone
também precisam ser fornecidas (conforme aplicável) paragit svn fetch
. Por exemplo, eu configurei-r HEAD
paragit svn clone
obter apenas a revisão HEAD SVN. Para retomargit svn fetch
, executei , que comecei a importar todas as revisões.