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?
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 svn2git
para 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
, comgit-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. :-)