você está aqui: Home  → Arquivo de Mensagens

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! ;-)

Referências

  1. http://www.nongnu.org/cvs/
  2. http://subversion.tigris.org/
  3. http://svn.zope.org/
  4. http://svn.plone.org/
  5. http://www.edgewall.com/trac/
  6. http://www.python.org/
  7. http://colab.interlegis.gov.br/
  8. http://ubuntulinux.org/
  9. http://projects.edgewall.com/trac/attachment/wiki/TracL10N/trac-0.9.1-templates-pt-br.tar.gz


 

 

Veja a relação completa dos artigos de Jean Rodrigo Ferri

Opinião dos Leitores

Cristiane
10 Fev 2012, 09:34
Muito bom esse artigo. Posso utiliza-lo no windows? Saberia me dizer quais os comandos usar?
André
19 Out 2011, 13:16
Genial a ajuda!
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script