Update gitcarga.sh

parent 23c47974
......@@ -23,22 +23,22 @@ echo
while : ;
do
echo
read -p 'Qual seu usuário do LDAP do SVN/GIT da PRODEPA? ' USERLDAP
read -p 'Qual seu usuário de acesso do SVN? ' USERLDAP
#
if [ -z $USERLDAP ];
then
echo "Seu usuário deve ser informado"
echo "Seu usuário deve ser informado"
continue
else
break
break
fi
done
while : ;
do
echo
printf 'Informe sua senha do LDAP do SVN/GIT da PRODEPA? '
printf 'Qual sua senha de acesso ao SVN? '
read_secret PASSWLDAP
#
if [ -z $PASSWLDAP ];
then
echo "Sua senha deve ser informado"
......@@ -47,35 +47,46 @@ do
break
fi
done
echo
while : ;
do
echo "Precisamos obter URL da raiz do seu SVN! "
read -p 'Qual a URL completa até a raiz do seu SVN ? ' URLSVN
#
if [ -z $URLSVN ];
then
echo "A URL do SVN deve ser informado!"
continue
else
break
fi
done
while : ;
do
echo
read -p 'Qual o nome do projeto que você quer migrar do SVN para o GITLAB? ' PROJSVN
#
if [ -z $PROJSVN ];
then
echo "Nome do projeto deve ser informado"
continue
else
printf "${RED}http://svn.dds.prodepa.gov.br/private/$PROJSVN/${NC}"
printf "${RED}$URLSVN/$PROJSVN/${NC}"
echo
read -p 'Está correta a URL do projeto? s(sim) ' SIM
if [ $SIM = "s" ];
then
URLPROJSVN="http://svn.dds.prodepa.gov.br/private/$PROJSVN/"
break
else
URLPROJSVN="$URLSVN/$PROJSVN/"
break
else
continue
fi
fi
fi
done
echo
while : ;
do
echo
read -p 'Cole aqui a URL .git do novo projeto no GITLAB ' URLGIT
#
if [ -z $URLGIT ];
then
echo "URL do novo projeto no GITLAB deve ser informado"
......@@ -86,9 +97,10 @@ do
read -p 'Está correta a URL do novo projeto no GITLAB? s(sim) ' SIM1
if [ $SIM1 = "s" ];
then
break
NEWURLGIT=$(echo $URLGIT | sed 's/@/'":"$PASSWLDAP"@"'/')
break
else
continue
continue
fi
fi
done
......@@ -107,35 +119,97 @@ do
break
fi
done
while : ;
do
echo
echo "O nome do projeto SVN pode ser criado com outro nome no GIT. "
read -p 'Qual o nome do diretorio do projeto .git ' PATHGIT
if [ -z $PATHGIT ];
then
echo "Nome do direório do projeto .git deve ser informado"
continue
else
printf "${RED}$PATHGIT${NC}"
echo
read -p 'Está correta o nome do diretorio do projeto .git? s(sim) ' SIM1
if [ $SIM1 = "s" ];
then
break
else
continue
fi
fi
done
echo
printf "${YELLOW}1/3-Passo: Verificar assinaturas de commits dos usuários no projeto${NC}"
echo
sudo java -jar ~/svn-migration-scripts.jar authors $URLPROJSVN $USERLDAP $PASSWLDAP > authors_$PROJSVN.txt
sed -i "s'mycompany.com'prodepa.pa.gov.br'g" authors_$PROJSVN.txt
printf "${YELLOW}1/3-Passo: Verificar assinaturas de commits dos usuários no projeto SVN${NC}"
echo
printf "${YELLOW}2/3-Passo: Importando projeto: ${RED}$URLPROJSVN${NC}"
echo $PASSWLDAP | sudo -S java -jar ~/svn-migration-scripts.jar authors $URLPROJSVN $USERLDAP $PASSWLDAP > authors_$PROJSVN.txt
#
while : ;
do
echo "Para fazer um relacionamento dos usuarios do SVN com usuarios do GIT, "
echo "informe só o dominio dos endereços de email dos usuarios de sua empresa! "
echo " Ex: nome.usuario@mycompany.com -- SERÁ SUBISTITUIDO POR --> nome.usuario@dominio.empresa.com.br "
read -p 'Qual o dominio dos usuarios de email da sua empresa? ' DOMSVNGIT
#
if [ -z $DOMSVNGIT ];
then
echo "O Dominio do GIT deve ser informado!"
continue
else
break
fi
done
#
sed -i "s'mycompany.com'$DOMSVNGIT'g" authors_$PROJSVN.txt
echo
git svn clone --trunk=$MASTERSVN --branches=/branches/* --tags=/tags/* --authors-file=authors_$PROJSVN.txt $URLPROJSVN $PROJSVN
echo
printf "${YELLOW}Assinatura do projeto no SVN ${RED}$PROJSVN${NC} ${YELLOW}concluída${NC}"
echo
printf "${YELlOW}Importação do projeto ${RED}$PROJSVN${NC} ${YELLOW}concluída{NC}"
echo
cd $PROJSVN/
printf "${YELLOW}3/3-Passo: Regeando referências das tags e branchs para o git${NC}"
printf "${YELLOW}2/3-Passo: Importando projeto do SVN: ${RED}$URLPROJSVN${NC}"
echo
sudo git for-each-ref refs/remotes/origin | cut -d / -f 4- | grep -v @ | grep -v / | grep -v trunk | while read branchname; do git branch "$branchname"; done
git svn clone --no-metadata --stdlayout --authors-file=authors_$PROJSVN.txt --prefix="" $URLPROJSVN $PATHGIT
echo
sudo git for-each-ref refs/remotes/origin/tags | cut -d / -f 5- | grep -v @ | while read tagname; do git tag "$tagname"; done
if [ -z $BRANCHSVN ];
then
MASTERSVN="/trunk"
else
cp .git/refs/heads/master .git/refs/heads/$BRANCHSVN
fi
git remote add origin $URLGIT
git push origin --all
git push origin --tags
echo
printf "${YELLOW}#### MIGRAÇÃO DO SVN PARA O GITLAB CONCLUIDA ####${NC}"
printf "${YELLOW}Importação do projeto ${RED}$PROJSVN${NC} ${YELLOW}concluída${NC}"
echo
echo
PROJSVNG="${PROJSVN}.git"
PROJSVNC="${PROJSVN}_temp"
mkdir $PROJSVNG
cd $PROJSVNG/
git init --bare
git symbolic-ref HEAD refs/heads/trunk
cd ..
cd $PATHGIT/
git remote add bare ../$PROJSVNG
git config remote.bare.push 'refs/remotes/*:refs/heads/*'
git push bare
cd ..
cd $PROJSVNG/
git branch -m trunk master
printf "${YELLOW}3/3-Passo: Regerando referências das tags e branchs para o git${NC}"
echo
git for-each-ref --format='%(refname)' refs/heads/tags | # para cada branch em refs/heads/tags
cut -d / -f 4 |
while read ref
do
git tag "$ref" "refs/heads/tags/$ref"; # cria-se a tag a partir do branch
git branch -D "tags/$ref"; # remove-se a tag
done
echo
cd ..
mkdir $PROJSVNC
cd $PROJSVNC/
git clone --bare ../$PROJSVNG
cd $PROJSVNG/
git remote add novo $NEWURLGIT
git push --all novo
git push --tags novo
echo
printf "${YELLOW}#### MIGRAÇÃO DO SVN PARA O GITLAB CONCLUIDA ####${NC}"
echo
echo
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment