Material base e utilizado como orientação para efetuar a migração
Atenção: foi utilizado a dica de prefixar as referências do que está vindo do SVN com
svn/
git svn init SVN_URL --stdlayout --prefix=svn/
A migração foi realizada utilizando o comando git svn fetch
, por exemplo:
git svn fetch -r1:5000
git svn fetch -r5001:10000
...
RA layer request failed: REPORT request failed on '/svn/project/!svn/vcc/default': REPORT of '/svn/project/!svn/vcc/default': Could not read chunk size: Secure connection truncated (https://svn.myserver.com) at /usr/lib/perl5/site_perl/Git/SVN/Ra.pm line 282
- Quando ocorre?
Este erro ocorre em revisões do SVN, as quais possuem muitos arquivos associados, onde o servidor do SVN não consegue responder todas as informações.
exibe o nome isolado
git rev-parse --abbrev-ref HEAD
-
Terminal 101: Automate the Terminal with Bash Scripts | Mac Life
-
Chmod permissions (flags) explained: 600, 0600, 700, 777, 100 etc.. | Think Plexx
Criei 3 bash scripts para automatizar a migração
Lembre-se: no ambiente UNIX, será necessário depois de criar os arquivos setar o chmod para 700 : permissão apenas para o usuário que criou os arquivos
exemplo: sudo chmod 700 file.sh
Atenção: estes scripts foram criados assumindo que as tags e branchs do SVN foram prefixadas com
svn/
- tags.sh
verifica se existe alguma tag do SVN para ser migrada e cria a respectiva na estrutura do GIT
- branchs.sh
verifica se existe algum branch do SVN para ser migrado e cria na respectiva estrutura do GIT
- update-master.sh
Atenção: executar este somente após ter exetucado o branchs.sh verifica se está com o branch master selecionado, caso contrário seleciona o branch master, após garantir que está com o branch master selecionado, verifica se existe o branch trunk, então realiza o comando de merge e posteriormente o comando para apagar o branch trunk
NOTA: os arquivos branchs.sh e update-master.sh não funcionaram no msysgit(MS Windows), não aceitou a verificação lógica de comparação de expressão regular definida por =~
1 - criar um repositório bare do GIT
mkdir repo_base
cd repo_bare
git init --bare
2 - associar o repositório de migração com o remote do repositório bare do GIT
cd staging
git remote add test ../repo_bare
3 - enviar os códigos do repositório de migração para o repositório bare do GIT (git push)
git push test --all
git push test --tags
4 - efetuar o clone do repositório bare do GIT e revisar se todas as referências estão corretas
na raiz do projeto
git clone repo_bare aclone
Obs.: quando o repositório for enviado para um repositório remoto/bare do GIT, as referências do repositório remoto SVN não serão enviados, tanto que ao verificar as referências ao clonar o repositório, o repositório remoto estará nomeado como 'origin' apontando para o repositório do qual foi feito o clone