git ready

dicas diárias para o noob ao guru
por Nick Quaranto, traduzido pela comunidade RailsBr

convertendo git-svn tag branches para tags verdadeiras

publicado em 16 Feb 2009

Esta dica foi generosamente cedida por Alexis Midon.
Obrigado! O post original dele esta aqui.

Alexis descobriu que no processo de conversão de Subversion para Git, tags acabam ficando um pouco confusas e mostram-se como branches ao invés de serem convertidas.
Isto pode ser muito inconveniente, especialmente quando usamos git branch que irá trazer uma tonelada de branches sendo que gostariamos de mostrar as tags com algo como tag/1.2, e assim por diante. Com um pouco de script e magia de Git podemos limpar isso facilmente.

Ele seguiu o processo padrão para converter um repositório svn:

$ mkdir rails
$ cd rails 
$ git svn init -t tags -b branches -T trunk <path to svn repo>
Initialized empty Git repository in .git/
$ git svn fetch

Depois ele preparou um pequeno script para converter todas as ‘tag branches’ em tags de verdade, e em seguida verificar se foram todas devidamente excluidas.

$ git-for-each-ref refs/remotes/origin/tags | cut -d / -f 5- |
while read ref
do
git tag -a "$ref" -m"say farewell to SVN" "refs/remotes/origin/tags/$ref"
git push origin ":refs/heads/tags/$ref"
git push origin tag "$ref"
done

Se você criou mais algum script que ajude na conversão de alguma outra SCM para Git, nos avise nos comentarios ou submeta a sua própria dica