====== Objetivo ======
O objetivo deste tutorial é apresentar como configurar o //Mantis// e o //Subversion// de maneira que seja possível adicionar uma anotação ou mesmo marcar um caso como resolvido de acordo com o texto digitado no momento do //commit// em um código.\\
Este tutorial parte do princípio que o //Mantis// e o //Subversion// já estejam instalados e funcionando normalmente de forma isolada, e se refere apenas aos passos necessários para realizar a integração entre as duas ferramentas.\\
====== Criando usuário no Mantis ======
Para que a integração funcione é necessário criar um usuário que será utilizado pelo Subversion para alterar o status e adicionar as anotações aos casos do //Mantis//.\\
Esse usuário deverá ter privilégios para alterar casos. Normalmente basta que ele possua privilégios de "Desenvolvedor".
====== Alterando o arquivo de configuração do Mantis ======
No diretório de instalação do //Mantis// edite o arquivo //config_inc.php// acrescentando o seguinte código, mantendo o conteúdo original do arquivo:
====== Criando arquivo de gancho do Subversion ======
No //Subversion// existe a possibilidade de criar arquivos de gancho, que contêm rotinas a serem executadas após algum evento ocorrido no projeto.\\
Para a integração com o //Mantis// iremos criar um arquivo de gancho a ser executado no evento //post-commit//, que é executado depois que a transação é submetida e uma nova revisão é criada.\\
Para criar um novo arquivo, no diretório de seu repositório acesse o diretório //hooks//. Dentro dele, crie um novo arquivo chamado //post-commit//, sem extensão alguma. \\
Preencha o arquivo da seguinte maneira:
#!/bin/bash
REPOS="$1"
REV="$2"
autor=$(svnlook author -r $REV $REPOS) # autor do commit
data=$(svnlook date -r $REV $REPOS) # data do commit
arquivos_alterados=$(svnlook changed -r $REV $REPOS) # arquivos alterados
log=$(svnlook log -r $REV $REPOS) # mensagem do commit
n=$'n' # quebra de linha
/usr/bin/php -q { DIRETORIO DE INSTALAÇÂO DO MANTIS }/scripts/checkin.php <<< "$autor$n$log$n$arquivos_alterados"
exit 0
====== Na prática ======
Ao realizar um commit, caso o comentário possua as seguintes palavras //caso #NumeroDoCaso//, o conteúdo do comentário será adicionado como anotação no caso referenciado, contendo a seguinte estrutura:
autor do commit
comentário do commit
arquivos alterados no commit
Caso o comentário do commit possua as seguintes palavras //resolvido caso #NumeroDoCaso//, além de ser adicionada uma anotação, o caso será marcado como resolvido no //Mantis//.