Instalando e Integrando o Subversion e o Trac
Colaboração: Jean Rodrigo Ferri
Data de Publicação: 24 de Setembro de 2005
Para a nossa alegria escrever códigos livres está se tornando moda, mas
com isso vêm a necessidade de organizarmos esses códigos deixando-os
disponíveis para a comunidade e colaboradores e também de gerenciar o
desenvolvimento dos softwares.
Existem vários sistemas de controle de versões de software, o mais popular
é o CVS[1]. Mas desde que surgiu o Subversion[2] várias comunidades
estão migrando seus repositórios de códigos por várias razões que não vou
discutir nesse momento. As comunidades Zope[3] e Plone[4] são alguns exemplos.
Mas somente o Subversion não resolve todos os problemas, ainda precisamos
gerenciar todo o processo de desenvolvimento, saber quem fez o quê,
quando e onde, produzir documentação de forma desburocratizada (nesse
quesito nada melhor que um Wiki), poder reportar bugs e agendar tarefas
(popular issue tracking), separar as várias versões dos softwares e,
é claro, ter relatórios que nos permitam acompanhar tudo.
Que tal se isso tudo fosse integrado? Então estamos falando do Trac[5],
um sistema escrito em Python[6], sob a licença GPL, que nos auxilia
a gerenciar todo o processo de desenvolvimento de softwares de maneira
descentralizada, com equipes distribuídas em qualquer lugar do planeta. Um
exemplo de uso do Trac é o Colab[7] do Interlegis.
Esse tutorial descreve passo-a-passo a instalação e configuração do
Subversion e do Trac no sistema operacional Ubuntu Linux[8] versão 5.04
(codinome Hoary), distro que tomou o lugar do meu Mandrake desde o início
desse ano e não troco mais. Mas pode servir como guia para qualquer
outra distribuição Linux, principalmente as baseadas em GNU/Debian! =)
Instalando o Trac, Subversion, Apache e Outras Dependências
O Trac tem várias dependências, Apache, Subversion, Python, SQLite,
ClearSilver, GNU Enscript e SilverCity. Mas para quem usa Debian ou
derivados como o Ubuntu basta usar o APT e todas as dependências serão
instaladas automaticamente. Tudo o que faremos será com permissão de
superusuário.
# apt-get install apache2 subversion libapache2-svn trac
Criando um Repositório SVN
O Subversion é também chamado de SVN e após sua instalação precisamos criar nosso repositório, múltiplos repositórios podem ser criados, mas geralmente um só atende as necessidades.
# svnadmin create /opt/svn
Criando os Usuários
Podemos usar várias técnicas para autenticar usuários, e usar bases diferentes para o Subversion e para o Trac, mas por conveniência ambos compartilharão a mesma base.
Os usuários ficarão armazenados em um arquivo e suas senhas serão encriptadas com o utilitário do Apache htpasswd. Criamos inicialmente o arquivo de usuários e senhas com um usuário, o qual chamei de admin.
# htpasswd -c /opt/svn/dav_svn.passwd admin
Após, podemos criar novos usuários.
# htpasswd -s /opt/svn/dav_svn.passwd usuario
Configurando o Repositório SVN
Agora precisamos configurar o nosso repositório Subversion, opções avançadas de configuração podem ser usadas, mas para o nosso exemplo faremos o básico.
# vi /opt/svn/conf/svnserve.conf
E substituiremos a configuração existente dando permissão de leitura para usuários anônimos e de escrita para autenticados.
[general]
anon-access = read
auth-access = write
realm = Meu Subversion
[auth]
store-auth-creds = no
Configurando o Apache para o SVN
A organização do Apache no Ubuntu é muito interessante e funcional, mas como padrão vamos apagar o arquivo do Subversion criado em sua instalação.
# rm /etc/apache2/mods-enabled/dav_svn.conf
E editar um novo arquivo para ficar em conformidade com o padrão que o Ubuntu propõe.
# vi /etc/apache2/sites-available/svn
E nesse arquivo configuramos um Virtual Host para o nosso repositório tornando sua URL bonita! :-)
NameVirtualHost 10.10.10.10:80
<VirtualHost 10.10.10.10:80>
ServerName svn.seu_dominio.com.br
ServerAlias svn
ServerAdmin admin@seu_dominio.com.br
ErrorLog /var/log/apache2/error_svn_log
CustomLog /var/log/apache2/access_svn_log common
<Location "/">
DAV svn
SVNPath /opt/svn
AuthType Basic
AuthName "Meu Subversion"
AuthUserFile /opt/svn/dav_svn.passwd
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
# SSLRequireSSL
</Location>
</VirtualHost>
Como comentei a organização da configuração do Apache no Ubuntu é nota 10, vamos agora habilitar o nosso módulo.
# ln -s /etc/apache2/sites-available/svn /etc/apache2/sites-enabled/svn
E pronto, o Subversion está configurado!
Criando a Base do Trac
Da mesma forma que criamos o repositório SVN precisamos criar a base para o nosso Trac.
# trac-admin /opt/trac initenv
Algumas perguntas serão feitas.
Project Name [My Project]> Meu Trac
Path to repository [/var/svn/test]> /opt/svn
Templates directory [/usr/share/trac/templates]> (enter)
Configurando o Trac
Vamos agora configurar o Trac.
# vi /opt/trac/conf/trac.ini
Configure ao seu gosto, mas vamos ver um exemplo de configuração.
[header_logo]
src = logo.gif
alt = Meu Trac
height = 50
link = http://trac.seu_dominio.com.br/
width = 150
[logging]
log_file = trac.log
log_level = DEBUG
log_type = none
[trac]
default_charset = iso-8859-15
templates_dir = /usr/share/trac/templates
repository_dir = /opt/svn
htdocs_location = /trac/
database = sqlite:db/trac.db
[notification]
smtp_enabled = false
smtp_replyto =
smtp_always_cc =
smtp_server = smtp.seu_dominio.com.br
smtp_from = admin@seu_dominio.com.br
always_notify_reporter = false
[project]
url = http://trac.seu_dominio.com.br/
footer = Este conteúdo está sob a licença<br /><a href="http://creativecommons.org/licenses/by/2.5/deed.pt">Creative Commons</a>
name = Meu Trac
descr = Meu Ambiente de Desenvolvimento Trac
icon = favicon.ico
[mimeviewer]
enscript_path = enscript
[attachment]
max_size = 1024000
[timeline]
changeset_show_files = 0
[diff]
tab_width = 8
[ticket]
default_version =
default_severity = normal
default_component = component1
default_priority = normal
default_milestone =
Configurando o Apache para o Trac
Voltamos ao Apache, vamos fazer um Virtual Host para o Trac tornando a sua URL de acesso mais bonita escondendo coisas feias como '/cgi-bin/'. Editamos um novo arquivo de configuração para o Trac.
# vi /etc/apache2/sites-available/trac
E nesse aquivo a configuração do nosso Virtual Host.
<VirtualHost 10.10.10.10:80>
ServerName trac.seu_dominio.com.br
ServerAlias trac
ServerAdmin admin@seu_dominio.com.br
CustomLog /var/log/apache2/access_trac_log combined
ErrorLog /var/log/apache2/error_trac_log
Alias /trac "/usr/share/trac/htdocs"
SetEnv TRAC_ENV "/opt/trac"
ScriptAliasMatch ^/(.*) /usr/lib/cgi-bin/trac.cgi/$1
<Location "/login">
AuthType Basic
AuthName "Meu Trac"
AuthUserFile /opt/svn/dav_svn.passwd
Require valid-user
# SSLRequireSSL
</Location>
</VirtualHost>
E agora habilitamos o módulo do Trac no Apache do Ubuntu.
# ln -s /etc/apache2/sites-available/trac /etc/apache2/sites-enabled/trac
Habilitando CGI para o Trac no Apache
O Trac roda sobre CGI, precisamos então habilitar o módulo de CGI do Trac no diretório de CGI do Ubuntu. Pode-se copiar o módulo ou simplesmente criar um link simbólico para ele, nossa opção.
# ln -s /usr/share/trac/cgi-bin/trac.cgi /usr/lib/cgi-bin/trac.cgi
Configurando as Permissões para o Apache
Como configuramos tudo até agora com permissão de superusuário precisamos transferir a propriedade dos arquivos para o usuário que roda o Apache (www-data), para que o Apache possa tornar esses módulos acessíveis publicamente.
# chown -R www-data:www-data /opt/svn /opt/trac
Reiniciando o Apache
O último passo é reiniciar o Apache.
# /etc/init.d/apache2 restart
E se tudo ocorreu como o esperado, tanto o Subversion quanto o Trac já estão funcionando e podem ser acessados via protocolo HTTP e WebDAV. Experimente acessar as URLs, em nosso exemplo svn.seu_dominio.com.br e trac.seu_dominio.com.br, do seu navegador.
Habilitando Permissões no Trac
Podemos ainda configurar permissões para nossos usuários no Trac. Por padrão ele já traz um conjunto de permissões pré-configuradas as quais podemos listar.
# trac-admin /opt/trac permission list
Então basta configurar a permissão de administração geral do Trac para o nosso usuário admin e outras tantas permissões quantas você desejar aos demais usuários.
# trac-admin /opt/trac permission add admin TRAC_ADMIN
Traduzindo os Templates do Trac
O Trac ainda não possui suporte a i18n (internacionalização), mas existe um conjunto de templates traduzidos[9] para o nosso idioma Português do Brasil. Basta movê-los para o diretório '/usr/share/trac/templates/', mas antes é bom fazer backup dos templates originais existentes nesse diretório.
Conclusão
O uso de um sistema de controle de versões é viciante. Depois que você começa a usá-lo não consegue mais viver sem ele, pois ele proporciona o domínio total sobre a evolução dos códigos fontes do software, mesmo com pessoas diferentes em locais diferentes, trabalhando sobre o mesmo código.
Entre várias outras vantagens, permite rever trechos de códigos, verificar facilmente as diferenças entre alterações nos códigos fontes, recuperar desastres, desenvolvimento de versões paralelas e armazena todo o histórico de evolução dos softwares.
O Subversion é um grande avanço em se tratando de sistema de controle de versões centralizado (uma cópia principal no servidor e cópias de trabalho nos clientes), trazendo facilidades e vários novos recursos.
Mas ele só não permite o controle total sobre o processo de desenvolvimento, a integração com o Trac supre com elegância essa carência.
Espero que você tenha gostado e que o tutorial lhe seja útil! ;-)