TRAC E BAZAAR

editar

É uma ferramenta open source escrita em Python, sob licença BSD, baseada em web, que usa uma abordagem minimalista para o gerenciamento de projetos de software.

Provem uma integração com várias ferramentas de controle de versão e suporte a métodos de desenvolvimento, preservação da integridade do produto e auditoria, que permite identificar por que, quando e por quem um artefato foi alterado.

O objetivo é ajudar o desenvolvedor a rastrear as mudanças, entender o porquê de cada uma e qual o seu impacto no projeto como um todo.

A ferramenta disponibiliza recursos interessantes como controle de mudanças por sistema de tickets e wiki para documentação colaborativa.

COMPARATIVO TRAC E GITHUB

editar
 
Comparativo entre trac e github

Trac é um aplicativo de gerenciamento de projetos de software que oferece uma wiki aprimorada e um sistema de rastreamento para projetos de desenvolvimento de software.

Github é um plataforma de hospedagem de repositório Git baseada na web que fornece controle de versão distribuído e funcionalidade de de gerenciamento de código-fonte (SCM).

 
Comparativo trac e github 2
 
Comparativo trac e github 3
 
comparativo trac e github 4

BAZAAR

editar
  • É uma ferramenta de controle de versão para desenvolvimento de software.
  • Escrito em python sob a licença GNU General Public License (GPL).
  • Era inicialmente um projeto piloto de features que seriam posteriormente integradas a um antigo sistema de controle de versão chamado Baz. No entanto, este projeto foi abandonado devido ao fato de muitos dos principais desenvolvedores do projeto Baz terem migrarado para o Bazaar. Então, em janeiro de 2005, estabeleceu-se o site público oficial e uma lista de discussão do projeto, e logo em seguida, foi feito o primeiro pré-lançamento da ferramenta.

Vantagens

  • Facilidade de uso e curva de aprendizagem baixa.
  • Fluxos de trabalho.
  • Arquitetura para plugins.
  • Integração com vários forges diferentes.
  • Funciona em diferentes Sos.

Instalação

Para a instalação do bazaar em uma plataforma debian basta o comando:

$ sudo apt-get install bzr
$ bzr

Comandos básicos:

$ bzr init		Cria um novo diretório para o projeto
$ bzr branch         Cria uma nova branch
$ bzr add            Adiciona arquivos ou diretórios
$ bzr ignore         ignora arquivos ou padrões
$ bzr mv             move ou renomeia um arquivo
$ bzr status         Apresenta as mudanças realizadas
$ bzr diff           Mostra os detalhes de diferenças
$ bzr merge          Aloca as mudanças de outra branch
$ bzr commit         Comita as mudanças
$ bzr push sftp:…		Publica as mudanças no forge configurado
$ bzr serve 		Sobe um servidor
$ bzr log            Apresenta o histórico de mudanças
$ bzr check          Valida o armazenamento
$ bzr help init      Apresenta informações sobre o comando init
$ bzr help 		Apresenta informações de todos o comandos
$ bzr help topics    Apresenta informações por tópicos
 
Tabela de comandos básicos bazaar

Instalação e configuração Trac com Bazaar

editar

O presente tutorial tem, por objetivo, mostrar o processo de instalação e configuração do sistema de controle de versão Bazaar, utilizando o forge Trac.

Pacotes utilizados:

  • Trac-1.0.1
  • Bazaar-2.7.0
  • Plugin TracBzr-0.4.2
  • MySQL-14.14
  • Apache2-2.4.7
  • Python-2.7.6

Não foi encontrada uma documentação definindo os requisitos mínimos para o sistema. Entretanto, o ambiente configurado a partir deste tutorial funcionou corretamente com as seguintes configurações:

  • Sistema Operacional: Ubuntu 14.04 64bits;
  • Memória RAM: 1 GB
  • HD: 30GB SSD

Este tutorial divide-se, basicamente, em três partes

  1. Instalação das dependências
  2. Instalação e configuração do Trac
  3. Instalação e configuração do plugin TracBzr

Instalação das dependências

editar
  • Atualizar o sistema:
$ sudo apt-get update && sudo apt-get upgrade
  • Instalar python e pip:
$ sudo apt-get install python python-pip
  • Instalar Apache, Bazaar e pacotes mysql (Obs: Durante a instalação do pacote mysql-server, deve-se definir uma senha de acesso para o usuário root):
$ sudo apt-get install apache2 libapache2-mod-wsgi apache2-utils python-setuptools python-genshi mysql-server python-mysqldb bzr
  • Configurar MySQL (Obs: Deve-se digitar a senha de acesso do MySQL definida na instalação):
$ mysql -u root -p
  • Depois de logado no banco, criar banco de dados para o Trac e permissões de acesso, configurando a senha de acesso:
CREATE DATABASE trac DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
GRANT ALL ON trac.* TO tracuser@localhost IDENTIFIED BY '<senha_do_usuario_trac>';
exit

Instalação e configuração do Trac

editar
  • Instalar pacotes python (Babel e Trac):
$ sudo pip install --upgrade Babel
$ sudo pip install --upgrade Trac
  • Criar projeto do Trac:
    $ sudo mkdir -p /opt/tracprojects/newproject
    $ sudo trac-admin /opt/tracprojects/newproject initenv
    
  • Entrar com o nome do projeto, conforme as instruções na tela:
    $ Project Name [My Project]> newproject (press enter)
    
  • Definir a conexão com o banco de dados, conforme configurado anteriormente. Exemplo:
    $ mysql://tracuser:userpassword@localhost/trac
    
  • Fazer deploy do projeto:
    $ sudo trac-admin /opt/tracprojects/newproject deploy /opt/tracprojects/newproject/deploy
    
  • Modificar o dono da pasta para o usuário do Apache:
    $ sudo chown -R www-data:www-data /opt/tracprojects/newproject/
    
  • Configurar o Apache para o wsgi do projeto criado:
    $ sudo vim /etc/apache2/conf-available/trac.newproject.conf
    
  • Inserir as configurações do projeto, conforme o modelo abaixo:
    WSGIScriptAlias /newproject /opt/tracprojects/newproject/deploy/cgi-bin/trac.wsgi
            <Directory /opt/tracprojects/newproject/deploy/cgi-bin/>
             WSGIApplicationGroup %{GLOBAL}
             Order deny,allow
             Require all granted
            </Directory>
            <Location "/trac/login">
             AuthType Basic
             AuthName "Trac"
             AuthUserFile /opt/tracprojects/.htpasswd
             Require valid-user
            </Location>
         WSGIScriptAliasMatch ^/repo/.*/\.bzr/smart$ /opt/tracprojects/newproject/deploy/cgi-bin/bzr.wsgi
             #The three next lines allow regular GETs to work too
             RewriteEngine On
             RewriteCond %{REQUEST_URI} !^/code/.*/\.bzr/smart$
             RewriteRule ^/code/(.*/\.bzr/.*)$ /opt/tracprojects/newproject/repo/ [L]
            <Directory /opt/tracprojects/newproject/repo/>
             WSGIApplicationGroup %{GLOBAL}
            </Directory>
            <Location /repo/>
             AuthType Basic
             AuthName "Trac Source Access"
             AuthUserFile /opt/tracprojects/.htpasswd
            <LimitExcept GET>
            Require valid-user
            </LimitExcept>
            </Location>
    
  • Habilitar, no apache, o arquivo de configuração para o projeto, criado anteriormente:
    $ sudo a2enconf trac.newproject.conf
    
  • Criar senha htpasswd de admin para o Trac:
    $ sudo htpasswd -c /opt/tracprojects/.htpasswd admin
    
  • Definir permissões do usuário admin do Trac:
    $ sudo trac-admin /opt/tracprojects/newproject permission add admin TRAC_ADMIN
    
  • Habilitar módulo rewrite e wsgi do Apache:
    $ sudo a2enmod rewrite
    $ sudo a2enmod wsgi
    
  • Reinicie o Apache para verificar se tudo está funcionando corretamente:
    $ sudo service apache2 restart
    
  • O projeto deve estar disponível em http://<endereco>/newproject.

Instalação e configuração do plugin TracBzr

editar
  • Instalar o plugin TracBzr:
    $ cd ~
    $ bzr branch lp:trac-bzr
    $ cd trac-bzr
    $ sudo python setup.py install
    
  • Obs: Ao final do tutorial, caso haja algum problema no reconhecimento do plugin, instale-o a partir do comando easy_install:
    $ sudo easy_install TracBzr
    
  • Criar diretório para repositório:
    $ sudo -u www-data mkdir /opt/tracprojects/newproject/repo
    
  • Habilitar o plugin no arquivo de configuração do Trac:
    $ sudo vim /opt/tracprojects/newproject/conf/trac.ini
    
  • Adicionar ou editar (caso existam) os parâmetros:
repository_dir = /opt/tracprojects/newproject/repo
repository_type = bzr
  • Adicionar ao final do arquivo:
[components]
tracbzr.* = enabled
  • Criar um arquivo wsgi de acesso do repositório do projeto:
    $ sudo vim /opt/tracprojects/newproject/deploy/cgi-bin/bzr.wsgi
    
  • Preencher o arquivo com o conteúdo a seguir (alterando os parâmetros necessários):
    from bzrlib.transport.http import wsgi
    def application(environ, start_response):
        app = wsgi.make_app(
        root="/opt/tracprojects/newproject/repo/",
        prefix="/repo",
        readonly=False,
        enable_logging=False)
        return app(environ, start_response)
    
  • Criar a estrutura de repositórios do Bazaar:
    $ cd /opt/tracprojects/newproject/
    $ sudo bzr whoami "Usuario <usuario@mymail.com>"
    $ sudo bzr init-repo --no-trees repo/
    
  • Definir o usuário apache como dono dos diretórios do trac
    $ sudo chown -R www-data:www-data /opt/tracprojects
    
  • Para criar um novo projeto a partir do servidor:
    $ cd /opt/tracprojects/newproject/repo
    $ sudo -u www-data bzr init <nome-do-repositorio>
    
  • Para clonar um projeto existente, a partir do servidor, clone o respectivo repositório no diretório repo do projeto. Exemplo:
    $ cd /opt/tracprojects/newproject/repo
    $ sudo -u www-data bzr branch lp:inkscape
    
  • Configurar o bazaar no Cliente:
    $ cd ~
    $ bzr whoami "Your Name <youremail@mymail.com>"
    
  • Configurar repositórios a partir do cliente: (Obs: Acesse com o usuário criado anteriormente)
    • Criar um novo repositório:
$ bzr init bzr+http://104.131.124.162/repo/newproject
$ bzr checkout bzr+http://104.131.124.162/repo/newproject project_dir
  • Adicione um arquivo para testar se está tudo funcionando:
$ cd newproject
$ touch test.txt
$ bzr add test.txt
$ bzr commit -m "Added test.txt"