Como “hookar” o Subversion para realizar tarefas no Trac? 1 de outubro de 2007
Quem já utiliza o Subversion para gerenciar o desenvolvimento de seus softwares sabe como ele pode agilizar e controlar o processo. Uma função interessante do Subversion é poder “hookar” algumas ações, tais como: Após o commit, Antes do commit, Ao lockar, etc. Neste artigo veremos como fazer para que “após-um-commit” de uma nova revisão, o script feche automaticamente um ticket aberto no Trac.
A forma de utilização será “svn ci” e no log adicionar “(close #ticket-number) ou (refs #ticket-number)” antes do comentário normal da revisão.
Para começar a configuração primeiro devemos entrar na pasta do projeto Subversion, onde iremos configurar o “hook”.
$ cd /var/lib/svn/+projeto+/
Em seguida acessar a pasta “hooks”:
$ cd hooks
$ ls -l
-rw-rw-r– 1 root www-data 1996 2007-09-26 15:19 post-commit.tmpl
-rw-rw-r– 1 root www-data 1673 2007-09-26 15:19 post-lock.tmpl
-rw-rw-r– 1 root www-data 2290 2007-09-26 15:19 post-revprop-change.tmpl
-rw-rw-r– 1 root www-data 1602 2007-09-26 15:19 post-unlock.tmpl
-rw-rw-r– 1 root www-data 2969 2007-09-26 15:19 pre-commit.tmpl
-rw-rw-r– 1 root www-data 2038 2007-09-26 15:19 pre-lock.tmpl
-rw-rw-r– 1 root www-data 2764 2007-09-26 15:19 pre-revprop-change.tmpl
-rw-rw-r– 1 root www-data 1979 2007-09-26 15:19 pre-unlock.tmpl
-rw-rw-r– 1 root www-data 2137 2007-09-26 15:19 start-commit.tmpl
Veja que existem templates para várias ações que podem ser configuradas, recomendo ler mais sobre esse assunto para fazer as demais configurações, para nosso caso o que nos interessa é o “post-commit.tmpl”, devemos renomeá-lo para “post-commit” e torná-lo executável.
$ sudo mv post-commit.tmpl post-commit
$ sudo chmod +x post-commit
Depois editá-lo e adicionar as linhas que irão chamar o script do Trac, conforme abaixo:
$ sudo vim post-commit
— code —
REPOS=”$1″
REV=”$2″
LOG=`/usr/bin/svnlook log -r $REV $REPOS`
AUTHOR=`/usr/bin/svnlook author -r $REV $REPOS`
TRAC_ENV=’/var/lib/trac/+projeto+/’
TRAC_URL=’http://trac/+projeto+/’/usr/bin/python /usr/share/doc/trac/contrib/trac-post-commit-hook \
-p “$TRAC_ENV” \
-r “$REV” \
-u “$AUTHOR” \
-m “$LOG” \
-s “$TRAC_URL”
— code —
Se você está fazendo essa configuração pela primeira vez, você deve comentar todas as demais linhas deste arquivo, deixando apenas as descritas acima.
Agora vamos habilitar o script do Trac, primeiro devemos acessar o diretório “contrib” do Trac, que no Ubuntu está localizado em:
$ cd /usr/share/doc/trac/contrib/
Caso o arquivo esteja compactado, descompactá-lo usando o comando abaixo:
$ sudo gunzip trac-post-commit-hook.gz
E por fim torná-lo executável
$ sudo chmod +x trac-post-commit-hook
Pronto! Agora quando fizer o commit de uma revisão do seu projeto basta adicionar “(close #N)” para fechar um ticket ou “(refs #N)” para referenciá-lo e desta forma poder ver no futuro as alterações que foram feitas no projeto que estão relacionados a um determinado Ticket.
[...] artigo anterior como referenciar ou fechar um tickets no ato do “commit” da revisão (veja o artigo), mas nesta explanação não existe nenhum mecanismo para garantir que as revisões sejam enviadas [...]
[...] http://www.jornaldojerimum.com.br/2007/10/01/como-hookar-o-subversion-para-realizar-tarefas-no-trac/ [...]