Linux, Open-source, Programação e Produtividade

Como descobrir todos que commitaram em um repositório SVN

Jonas Abreu em 15/06/2009

Recentemente 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:

  1. svn log: Exibe todo o log de commits feitos naquele repositório.
  2. grep "^r[0-9]": Pega todas as linhas iniciadas com r seguido por um número (header de cada commit do svn)
  3. 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)
  4. sort: Ordena a lista com os usuários que comitaram.
  5. 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.

Quer aprender mais sobre esse assunto? Conheça o RegEx Game
Creative Commons License
Como descobrir todos que commitaram em um repositório SVN de Jonas Abreu está licenciado sob Creative Commons License.