Introdução
Este tutorial mostrará como trabalhar, de forma integrada, com o sistema de controle de versão distribuído
Git e a ferramenta de
gestão de projetos
Redmine.
A instalação do Redmine foi vista no Tutorial:
Instalando o Gerenciador de Projetos Redmine usando o PostgreSQL sobre o nginx.
Mostrarei o básico de instalação e uso do DCVS Git e sua integração com o Redmine. Este tutorial é baseado no
Debian Squeeze
(6.0.3) e você precisa estar logado como Root para executar parte deste tutorial.
Instalação
1) Instalando o Git
Edite o arquivo "/etc/apt/sources.list":
# nano /etc/apt/sources.list
Adicione ao arquivo:
deb http://ftp.br.debian.org/debian squeeze main contrib
deb-src http://ftp.br.debian.org/debian squeeze main contrib
Atualize a listagem de pacotes local:
# apt-get update
Instale o Git:
# apt-get install git git-core
1.1) Iniciando um repositório no Git (Exemplo Básico)
Crie um diretório "/root/tutorial":
# mkdir /root/tutorial
Inicie o repositório Git:
# git init /root/tutorial
Uma mensagem de sucesso deve aparecer:
Initialized empty Git repository in /root/tutorial/.git/
Entre no diretório "/root/tutorial":
# cd /root/tutorial
Crie um arquivo de texto (Digite qualquer coisa e saia salvando):
# nano /root/tutorial/arquivo.txt
Adicione o arquivo ao repositório:
# git add /root/tutorial/arquivo.txt
Faça o Commit Local (Escreva uma mensagem sobre o que esta sendo commitado):
# git commit -a
Visualize Log do Repositório:
# git log
1.2) Criando um repositório Bare (Público)
Utilizamos um repositório Bare, como meio de centralizar um determinado repositório Git, este não é utilizado para trabalhar e sim um repositório
de troca.
Crie um diretório para colocarmos o repositório Bare:
# mkdir /srv/git
Clone o repositório exemplo no formato Bare:
# git clone --bare /root/tutorial /srv/git/tutorial.git
Listando o repositório "tutorial.git":
# ls /srv/git/tutorial.git/
Teremos algo como:
branches config description HEAD hooks info objects packed-refs refs
2) Integrando Repositório Git ao Redmine
Logue-se no Redmine. Selecione a Opção: 'Administração' (canto superior esquerdo) -> 'Configurações' -> 'Repositórios'.
Caso não esteja marcado, selecione na caixa 'SCM habilitados', a opção: Git.
Na Caixa: 'Referenciando tarefas nas mensagens de commit', defina o comportamento para as 'Palavras de fechamento' (fixes, closes) para que a
'Situação alterada' seja 'Fechada' e '% Terminado' 100%.
Isto permitirá que quando enviamos um 'commit' para o Git, este possa fechar uma determinada tarefa que seja referenciada através do
comentário com as palavras 'fixes' ou closes'. Veremos um exemplo mais para frente.
2.1) Agendando a verificação de mudanças em repositórios
Precisamos agendar uma tarefa para que o Redmine possa verificar se houve mudanças 'commitadas' aos repositórios integrados.
Crie um Script Bash: "/opt/changeset.sh":
# nano /opt/changeset.sh
Adicione ao "/opt/changeset.sh":
*/1 * * * * www-data /opt/changeset.sh 2> /dev/null
2.2) Crie um Projeto no Redmine
Selecione a Opção: 'Administração' (canto superior esquerdo) -> 'Projetos' -> 'Novo Projeto' (canto superior direito).
Defina o 'Nome do Projeto' e o 'Identificador' (deve ter entre 1 e 100 caracteres. Letras minúsculas (a-z), números e hífens permitidos). Crie o
Projeto.
Nas 'Configurações' do Projeto criado, selecione: 'Repositório'.
Escolha o Git como 'Controle de versão',
Em 'Caminho para o repositório', coloque o caminho até o repositório Bare que criamos no passo anterior: /srv/git/tutorial.git
Escolha a 'Codificação do Caminho' como UTF-8, e marque a opção 'Relatar última alteração para arquivos e diretórios'.
Selecione a opção 'Repositório' nas opções do
Projeto. Você deve ver a
listagem de commits realizadas.
3) Testando a Integração
Crie uma 'Nova Tarefa' no Projeto. Grave o número da tarefa criada (Issue).
Faça o Clone do repositório Bare criado:
# git clone /srv/git/tutorial.git /root/testando
Entre no diretório do repositório clonado:
# cd /root/testando
Crie um arquivo em branco:
# touch /root/testando/teste.txt
Adicione ao repositório Git:
# git add /root/testando/teste.txt
Faça o 'commit' adicionando a palavra de controle 'closes', seguida de ' # ', e o número do Ticket criado.
Exemplo de mensagem no 'commit':
# git commit -m 'Testando Fechamento de Ticket 4 - closes #4'
Faça o 'push' (envio) das mudanças ao repositório Bare:
# git push -f
Após um minuto, o Redmine deve atualizar a lista de tarefas em relação aos 'commits' no Git, caso não ocorra, clique na opção 'Repositório' para
recarregar os 'commits'.
Visite a lista de 'Tarefas' do Projeto no Redmine, a tarefa aberta deve ter sido fechada e o 'commit' deve esta associado ao Ticket.