Trac + Bazaar
TRAC E BAZAAR
[editar | editar código-fonte]TRAC
[editar | editar código-fonte]É 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 | editar código-fonte]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).
BAZAAR
[editar | editar código-fonte]- É 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
Instalação e configuração Trac com Bazaar
[editar | editar código-fonte]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
- Instalação das dependências
- Instalação e configuração do Trac
- Instalação e configuração do plugin TracBzr
Instalação das dependências
[editar | editar código-fonte]- 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 | editar código-fonte]- 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 | editar código-fonte]- 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"