Como descobrir todos que commitaram em um repositório SVN
Jonas Abreu em 15/06/2009Recentemente escrevi um post sobre como migrar seu repositório svn para o git. Em um dos passos falo pra você criar uma lista de mapeamento dos seus usuários do svn para os do git. O único problema disso é descobrir quem são eles. Aqui vai um one-liner de bash que resolve isso :)
svn log | grep "^r[0-9]" | \\
sed -E "s/^.*\|(.*)\|.*\|.*$/\1/" | \\
sort | uniq > seu_arquivo_com_os_usuarios
Explicação da bizarrice acima:
svn log
: Exibe todo o log de commits feitos naquele repositório.grep "^r[0-9]"
: Pega todas as linhas iniciadas com r seguido por um número (header de cada commit do svn)sed -E "s/^.\*\|(.\*)\|.\*\|.\*$/\1/"
: Roda o monstro chamado sed em modo estendido e captura o nome dos usuários (conte o número de pipes)sort
: Ordena a lista com os usuários que comitaram.uniq
: elimina todas as duplicatas deixando apenas uma cópia de cada usuário (só funciona em listas ordenadas. Por isso o sort anterior).
Tentei fazer usando o comando cut
no lugar do sed
, mas o cut desistia no meio do caminho por causa de caracteres estranhos.