Como usar o svn2git no repositório

estou a usar o svn2git para testar a migração de um acordo svn para um git. Agora o meu svn é construído como o thise

myproj contém

repo1 /
repo2 (obsolete)/
old/

Cada acordo de recompra contém os seus próprios ramos, marcas, etc. Só preciso de tudo o que está no repo1. Quando começo o processo, recebo isto:

svn2git https://server/myproj/repo1 --username LVO

resultado:

Initialized empty Git repository in /folder/.git/
Using higher level of URL: https://server/myproj/repo1 => https://server/myproj
E do que o processo começa. Receio que também esteja a tirar todas as outras. É assim que se começa?:

$ svn2git https://server/myproj/repo1 --username xxx --trunk=/repo1 --branches=/repo1 --tags=/repo1 
(Especialmente a coisa do baú não é claro para mim). Como é que tenho de lançar o svn2git quando o meu repo está nesta árvore?

Author: DenCowboy, 2017-05-08

1 answers

Para uma migração única {[[0]} é Não {[27] } a ferramenta certa para conversões de repositórios ou partes de repositórios. É uma grande ferramenta se quiser usar o Git como interface para um servidor de SVN existente, mas para conversões de uma só vez, deverá Não usar git-svn, mas svn2git o que é muito mais adequado para este caso de uso.

A ferramenta svn2git que você usa é baseada em {[[0]} e, portanto, sofre da maioria das mesmas desvantagens, apenas corrigindo algumas no pós-clone accao.

Existem muitas ferramentas chamadas svn2git, a melhor provavelmente é a do KDE de https://github.com/svn-all-fast-export/svn2git . recomendo vivamente a utilização dessa ferramenta svn2git. É o melhor que eu sei disponível lá fora e é muito flexível no que você pode fazer com seus arquivos de regras.

Você será facilmente capaz de configurar o ficheiro de Regras svn2gitpara produzir o resultado que deseja a partir do seu layout SVN actual, incluindo quaisquer histórias complexas.

Se estiver não 100% sobre a história do seu repositório, svneverever de http://blog.hartwork.org/?p=763 é uma grande ferramenta para investigar a história de um repositório SVN ao migrá-lo para o Git.


Mesmo que git-svn (ou o svn2git que se baseia nele) seja mais fácil de começar, aqui estão algumas outras razões pelas quais usar o KDE svn2git em vez de git-svn é superior, para além da sua flexibilidade:

  • a história é reconstruída muito melhor e mais limpa por {[[2]} (se a correcta é usado), este é especialmente o caso para histórias mais complexas com ramos e mescla e assim por diante
  • as marcas são marcas reais e não ramos no Git
  • com {[[0]} as marcas contêm uma persistência extra vazia que também as torna Não parte dos ramos, por isso um fetch normal não as irá obter até que você dê --tags ao comando, dado que, por omissão, só são obtidas as marcas que apontam para os ramos obtidos. Com as etiquetas svn2git apropriadas estão onde pertencem
  • se mudou a disposição em SVN você pode facilmente configurar isso com svn2git, com git-svn você irá perder o histórico eventualmente
  • com svn2git, Poderá também dividir um repositório de SVN em múltiplos repositórios Git facilmente
  • ou combinar múltiplos repositórios de SVN na mesma raiz de SVN num repositório de Git facilmente
  • a conversão é um bilião de vezes mais rápida com o correcto {[[2]} do que com git-svn

Você vê, existem muitas razões pelas quais {[[0]} é pior e o KDE svn2git é superior. :-)

 1
Author: Vampire, 2017-05-08 09:26:31