|
Este artigo trata de como integrar o Mantis, um bug tracker popular, com o SVN. O objetivo é automatizar a atualização de issues no mantis a partir de commits de alterações pelo SVN.
Basicamente, deseja-se eliminar a atividade adicional de logar no mantis para marcar uma issue como "RESOLVED" após a conclusão da etapa de codificação.
Assume-se que você já tem o Mantis e o SVN instalados e funcionando adequadamente de modo isolado. Caso ainda não tenha, procure por tutoriais na net sobre como instalá-los.
Outra premissa é que você está trabalhando em um servidor Linux. Em ambientes (ergh) Windows o procedimento pode ser diferente, não sei e não me pergunte... :)
Antes de mais nada, devo citar os devidos créditos. Quase tudo que fiz aqui veio do tutorial encontrado em http://www.grafxsoftware.com/option.php/182. Apenas fiz algumas atualizações, como por exemplo arquivos que mudaram de lugar, etc.
Bom, o primeiro passo é criar um usuário no Mantis para ser usado pelo script. Você pode criar um usuário chamado "svn", por exemplo. É importante que ele tenha permissão nos seus projetos de alterar o status de issues. Coloque-o como "developer" que tudo vai ficar bem.
A regra fundamental é a exigência de um pequeno padrão de texto nos comentários dos commits no SVN. Sempre que você (ou o programador) referenciar a issue no texto de comentário, esse texto será adicionado como uma nota no registro da issue no Mantis. Para isso, basta que o texto contenha um padrão do tipo:
- issue #4
ou
- bug #00456
Então, se o comentário for algo do tipo: "Corrigido caminhos relativos. Alteração referente a issue #5647", esse texto será adicionado como nota no registro da issue número 5647 no Mantis.
E, se o texto contenha um padrão do tipo:
- fixes issue #5466
ou
- fixed issue #5466
ou ainda
- fixed bug #5466
a issue terá seu status alterado, além da incorporação do texto como nota. O status irá para RESOLVED e a resolution para FIXED. É claro que você poderá mudar no código o status final que deseja, ou até mesmo o padrão de texto a ser procurado, colocando em Português, por exemplo.
Vamos lá. Vá para o diretório onde você tem o Mantis instalado. A partir de agora vou me referir a ele como MANTIS_PATH, pois cada um tem o seu e não mostra pra ninguém (sim, que nem aquilo).
Neste diretório, abra, com seu vi preferido, o arquivo de configuração do Mantis, chamado config_inc.php e inclua o código abaixo após as linhas de código já existentes. Obviamente antes do delimitador de código final, o famoso "?>".
Clique no link abaixo para ver o código.
config_inc.php 
# Mantenha o trecho de código original do arquivo aqui
#
# Account to be used by the source control script. The account must be enabled
# and must have the appropriate access level to add notes to all issues even
# private ones (DEVELOPER access recommended).
$g_source_control_account = 'svn';
# For open source projects it is expected that the notes be public VS_PUBLIC, however,
# for non-open source it will probably be VS_PRIVATE.
$g_source_control_notes_view_status = VS_PRIVATE;
# Regular expression used to detect issue ids within checkin comments.
# see preg_match_all() documentation at (detect bug or issue in comment)
$g_source_control_regexp = '/\b(?:bug|issue)\s*[#]{0,1}(\d+)\b/i';
# If set to a status, then after a checkin with a log message that matches the regular expression in
# $g_source_control_fixed_regexp, the issue status is set to the specified status.
# If set to OFF, the issue status is not changed. Use CLOSED if you prefer.
$g_source_control_set_status_to = RESOLVED;
# Whenever an issue status is set to $g_source_control_set_status_to, the issue resolution
# is set to the value specified for this configuration.
$g_source_control_set_resolution_to = FIXED;
# Regular expression used to detect the fact that an issue is fixed and extracts
# its issue id. If there is a match to this regular expression, then the issue
# will be marked as resolved and the resolution will be set to fixed.
$g_source_control_fixed_regexp = '/\bfix(?:ed|es)\s+(?:bug|issue)?\s*[#]{0,1}(\d+)\b/i';
Feito isso, você já pode testar o funcionamento do casamento de padrão.
Embaixo de MANTIS_PATH, tem um subdiretório chamado scripts. Nele vamos encontrar um... script!!!... que podemos usar para testar essa parte da integração.
Ah, mas antes disso, é claro que você tem que criar (reportar) uma issue de teste no Mantis. Memorize seu número.
Criada a issue, no shell, dentro do subdir scripts, execute o comando abaixo, trocando o número 4 pelo número da sua issue de teste.
/usr/bin/php checkin.php <<< "hlbog fixed issue #4"
Funcionou?
Excelente.
Agora a última parte. Aqui precisamos fazer com que uma operação de commit no SVN chame automagicamente o script de checkin que acabamos de executar manualmente.
Pra isso temos os gloriosos hooks! Fácil. Vá para o diretório do seu repositório SVN, no servidor mesmo, não é na sua cópia de trabalho local. Neste local tem um subdiretório chamado hooks, e lá vários arquivos com extensão tmpl, que são scripts de exemplo que vem na instalação do SVN. Mas você irá criar seu próprio arquivos chamado post-commit. Isso mesmo, sem extensão nenhuma.
O conteúdo desse arquivo será:
Clique no link abaixo para ver o código.
post-commit
#!/bin/bash
REPOS="$1"
REV="$2"
auth=$(svnlook author -r $REV $REPOS)
dt=$(svnlook date -r $REV $REPOS)
changed=$(svnlook changed -r $REV $REPOS)
log=$(svnlook log -r $REV $REPOS)
n=$'n'
cd "MANTIS_PATH"
echo -n "Changeset [$] by $auth, $dt$n$log$n$changed" | /usr/bin/php -q "./scripts/checkin.php" > /dev/null
exit 0
Repare que você deve colocar o caminho para o SEU Mantis no código.
Altere a permissão do arquivo para execução:
chmod 550 post-commit
And... we're done!
good coding.
--
Helder Garcia |
full lace wigs
lace wigs
lace wigs sale
lace front wigs
need to resume, but such people like composer don't do that. Thank you for the article. Really perfect article about this good post.
discount prom dresses
Tiffany and CO. has become one of the most famous jewellery brands
tiffany jewelry
tiffany
Tiffany Store
Fashional Tiffany & CO. products about all Tiffany Jewellery, like: Tiffany Ring, Tiffany Necklaces, Tiffany Earrings, Tiffany Bracelets,
Tiffany Necklaces
ugg bailey button
mbt footwear
coach handbags
coach outlet
ghd straighteners
Supra Skytop II
Supra Skytop III
gucci sale
gucci handbags
gucci jewelry
Coach outlet
coach bags
coach outlet store online
I wish you have a wonderful day!Thank you.