Posso recuperar o histórico de um repositório SVN de um repositório local do git-svn?

1

Nossa equipe de desenvolvimento está usando atualmente o SVN para gerenciar o desenvolvimento de aplicativos da web. O desenvolvedor gerenciando o servidor SVN está tentando migrá-lo de um servidor Win XP mais antigo para outro servidor, mas a tentativa de gerar um despejo do repositório falha (corrompido ou algo assim). Por que está falhando é uma questão completamente diferente.

O dev gerenciando o repositório SVN sugeriu exportar o atual HEAD do repositório antigo para usar como base do novo repositório SVN, mas perderemos todo o nosso histórico SVN. Eu uso o git-svn localmente, o que significa que eu tenho 1,5 anos de confirmação de informações armazenadas localmente. Existe uma maneira de obter esses commits do git-svn e colocá-los em um novo repositório SVN?

    
por James 02.08.2011 / 21:44

1 resposta

0

Se você criar um repositório novo e vazio do SVN, você pode enviar todos os commits do git-svn diretamente para o repo? (não usei git ou git-svn, mas isso é o que eu faria com um dos meus hg repos se eu precisasse colocá-lo em um repositório svn)

Editar: Eu consegui fazer isso funcionar com o rebasing manual via mercurial. A única coisa que parece especial é o rebase manual em vez do rebase automático do svn. Você pode tentar isso no git-svn antes de puxar o mercurial para o mix.

  1. Crie um novo SVN Repo: svnadmin create targetSVN
  2. Confirmar inicialmente no novo repositório do SVN:

    svn co file://targetSVN svnCopy cd svnCopy
    touch test
    svn add test; svn commit -m "Initial Import"

  3. Verifique o repo por meio de hg : hg clone file://targetSVN hgCopy; cd hgCopy
  4. Puxe as alterações do git (via hg-git ): hg pull git://yourrepo.git
  5. Rebase manual: hg rebase -s tip -d 0 ( 0 deve ser o commit inicial do SVN, e tip deve ser o chefe do material que você extraiu do git. Certifique-se de que os changesets do git sejam lineares (não tenham mesclagens!). Substitua tip pelo número atual do changeset da cabeça do git (encontrado via hg heads ) se necessário). Aceite todas as alterações remotas quando perguntar sobre conflitos.
  6. hg push até que todas as alterações estejam no svn repo. Empurra 1 changeset de cada vez.
por 02.08.2011 / 21:55

Tags