Gerência - Controle de Versão

TortoiseCVS + CVSTrac - Controle de versões e Gerenciamento de Bugs

Nesse artigo serão apresentados alguns dos principais recursos oferecidos pelo TortoiseCVS e pelo CVSTrac. Com base nessas informações você já estará apto para iniciar o controle de versões dos seus projetos, aumentando assim a confiabilidade e a rastreabilidade do seu trabalho.

por Cristiano Caetano



CVS - Controle de Versões

O CVS é uma ferramenta Open Source que implementa as principais funções pertinentes ao processo de controle de versões. Basicamente, o CVS armazena em seu repositório as modificações realizadas num arquivo ao longo do tempo; cada modificação é identificada por um número chamado Revisão. Toda Revisão armazena as modificações realizadas, quem realizou as modificações, quando as modificações foram realizadas, entre outras informações. Além disso, o CVS conta com um mecanismo capaz de controlar os acessos simultâneos e as modificações paralelas, garantindo a integridade das modificações e a atomicidade das operações. De maneira geral, o fluxo de trabalho básico do CVS consiste em retirar os arquivos de um projeto para a área de trabalho, realizar as modificações e, por último, submeter as modificações ao repositório, como pode ser visto na Figura 1. O completo entendimento dos termos apresentados na Tabela 1 é fundamental para auxiliar a leitura deste artigo.


Tabela 1. Termos utilizados no controle de versões.


Figura 1. Operações realizadas pelo CVS.

TortoiseCVS

O TortoiseCVS é um front-end gráfico que torna o uso do CVS mais fácil e intuitivo. Basicamente, o TortoiseCVS realiza as principais operações do CVS por meio de menus de contexto integrados ao Windows Explorer, como pode ser visto na Figura 2.


Figura 2. Menus de contexto integrados ao Windows Explorer.

O TortoiseCVS é, em virtude da sua proposta, uma ferramenta extremamente eficiente cuja principal característica é a sua independência de uma aplicação cliente específica. Dessa forma, como descrito anteriormente, todas as operações serão realizadas por meio de menus de contexto do Windows Explorer. O TortoiseCVS é uma ferramenta gratuita distribuída sob a licença GPL. Ele roda normalmente nas seguintes versões do Windows: Windows 95, 98, ME, NT, 2000 e XP.

Repositório

Basicamente, um repositório é um diretório que tem por objetivo abrigar todos os arquivos de um projeto sob o controle de versões. O repositório poderá ser criado num diretório compartilhado no seu computador ou num servidor (Windows ou Linux). Naturalmente, quando o repositório é criado num servidor, você deverá instalar um servidor de CVS e configurar um método de acesso ao repositório para garantir a segurança dos arquivos sob o controle de versões. Sendo assim, para fins didáticos, os exemplos apresentados nas seções seguintes serão realizados num repositório local. Para tal tarefa, você deverá criar e compartilhar um diretório chamado CVSROOT na raiz do seu computador (C:\CVSROOT). Importação

Uma vez que o repositório tenha sido criado, o primeiro passo para iniciar o controle de versões é chamado de Importação. Neste passo, os arquivos da sua aplicação são transferidos para o repositório e submetidos ao controle de versões do CVS. Para tal tarefa, vamos transferir os arquivos de uma aplicação exeplo para o diretório "C:\Temp". A importação do projeto deverá ser realizada por meio do menu de contexto "Make New Module". Na caixa de diálogo "Make New Module", o TortoiseCVS fornece opções para acessar repositórios remotos por meio de qualquer método de autenticação suportado pelo CVS. Mas, no entanto, como havíamos definido anteriormente, todos os exemplos serão realizados utilizando um repositório local. Em razão disso, você deverá selecionar a opção "Locally mounted folder (:local:)" no campo "Protocol". O campo "Repository folder" deverá ser preenchido com "C:\CVSROOT" que é a localização do repositório criado anteriormente na raiz do seu computador. O campo Módulo indica um apelido que será utilizado pelo TortoiseCVS todas as vezes que ele se referir ao nosso projeto e deverá ser preenchido com o texto "webapp", como pode ser visto na Figura 3.


Figura 3. Caixa de diálogo para criar um novo módulo.

Após confirmar os dados anteriores, o TortoiseCVS exibirá um diálogo informando que não existe nenhum repositório criado no diretório informado. Você deverá selecionar a opção "Initialise a new repository here" para inicializar um novo repositório, como pode ser observado na Figura 4. Este diálogo será exibido somente na primeira vez que você importar o primeiro projeto, em virtude de que o repositório não havia sido inicializado ainda.


Figura 4. Inicialização do repositório.

Posteriormente, assim que a criação do novo módulo e a inicialização do repositório forem completadas, você deverá adicionar os arquivos a esse módulo recém criado. Para tal tarefa, você deverá acessar o menu de contexto "CVS Add Contents". O TortoiseCVS exibirá um diálogo solicitando a confirmação dos arquivos que serão adicionados, como pode ser visto na Figura 5.


Figura 5. Adicionando arquivos ao módulo.

Por fim, devemos realizar a operação de entrega, também chamada de "Commit" para transferir os arquivos do projeto "webapp" definitivamente para o repositório do CVS. Essa operação deverá ser realizada através do menu de contexto "CVS Commit". O TortoiseCVS exibirá um diálogo solicitando a confirmação dos arquivos que serão transferidos para o repositório. Neste diálogo, você também deverá escrever um breve comentário descrevendo as modificações realizadas. Além disso, antes de confirmar a operação você poderá modificar o formato do arquivo, comparar as suas modificações com outras versões armazenadas no repositório, entre outras opções, como pode ser observado na Figura 6.


Figura 6. Commit: Transferência definitiva dos arquivos ao repositório CVS.

Retirada dos arquivos do repositório

Uma vez que os arquivos de um projeto forem importados com sucesso, podemos finalmente iniciar as operações de controle de versões. Para tal tarefa, devemos retirar os arquivos armazenados no repositório e transferi-los para a área de trabalho onde poderemos realizar as modificações nos arquivos do projeto. A área de trabalho é um diretório qualquer no disco rígido. Neste caso, vamos assumir que a nossa área de trabalho será o diretório "C:\Projetos". Na prática, para realizar esta tarefa, você deverá clicar com o botão direito sobre o diretório "C:\Projetos" e acessar o menu de contexto "CVS Checkout". Como resultado, o TortoiseCVS exibirá o diálogo para realizar a retirada dos arquivos, também conhecido como "Checkout". Por meio desse diálogo, você poderá configurar onde está localizado o repositório de arquivos, qual projeto você deseja retirar, entre outras opções, como pode ser visto na Figura 7. Cabe lembrar que, a não ser que você faça alguma configuração adicional, o TortoiseCVS armazena uma lista dos projetos/repositórios acessados anteriormente, facilitando assim posteriores retiradas. Por fim, assim que a operação de retirada for concluída, você poderá começar a trabalhar com os arquivos do projeto "webapp" que foram transferidos para o diretório "C:\Projetos\webapp".


Figura 7. Checkout: Retirada dos arquivos do repositório CVS. Modificando os arquivos

Assim que o projeto for transferido para a área de trabalho, poderemos iniciar a edição dos arquivos. Perceba que após a importação e durante a edição dos arquivos, o TortoiseCVS modifica os ícones dos arquivos a fim dar um significado visual sobre o seu status em relação ao repositório, como pode ser visto na Figura 8. Para que a adição e remoção de arquivos sejam entendidas e refletidas no repositório do CVS, você deverá selecionar o arquivo desejado e acessar os menus de contexto "CVS Add" ou "CVS Remove" como descrito na Figura 9. Por fim, devemos realizar a operação de entrega "Commit" ao final do nosso trabalho para garantir que todas as modificações, adições e remoções sejam definitivamente refletidas no repositório do CVS.


Figura 8. Ícones modificados indicando o status atual dos arquivos.


Figura 9. Adicionando e removendo arquivos.

Inspecionando as modificações ao longo do tempo

Repare que o menu de contexto "History" tem a função de apresentar o histórico das modificações realizadas no arquivo. Assim, você poderá consultar o log das modificações, o nome do usuário que realizou a modificação, quando a modificação foi realizada e comparar a revisão atual com outras revisões, como pode ser visto na Figura 10.


Figura 10. Inspecionando o histórico das modificações ao longo do tempo.

Configurando o TortoiseCVS

Por último, as configurações do TortoiseCVS podem ser modificadas por meio da janela "Preferences", como pode ser visto na Figura 11.


Figura 11. Preferências do TortoiseCVS.

CVSTrac

O CVSTrac é uma ferramenta cujo principal objetivo é o registro e o gerenciamento de bugs. O CVSTrac é apenas um programa executável que é instalado como um serviço do Windows (existe uma versão do CVSTrac para Linux também), que por sua vez, utiliza um mecanismo nativo de acesso ao banco de dados SQLite, sem a necessidade de instalação ou configuração de bancos de dados externos. Sem discutir em detalhes, as funcionalidades principais do CVSTrac são as interfaces de cadastro, consulta e relatórios de bugs, wiki e integração com o CVS .

Integração com o CVS

O CVSTrac oferece uma integração nativa ao repositório do CVS. Por meio desse recurso, você poderá criar uma integração real entre as modificações realizadas nos arquivos de um projeto e os bugs cadastrados. Em outras palavras, durante a entrega "Commit" de um arquivo, você poderá informar o número de um bug e o CVSTrac realizará o mapeamento entre o arquivo modificado e o bug existente no banco de dados. No entanto, para garantir a integração entre ambos, você deverá se certificar que o arquivo "history" existe no CVSROOT (diretório onde ficam os arquivos administrativos do CVS) do repositório do CVS. Algumas versões do CVS não criam por default este arquivo, neste caso, você deverá criar um arquivo vazio chamado "history" no CVSROOT (diretório onde ficam os arquivos administrativos do CVS) do repositório do CVS. Como havíamos definido anteriormente, todos os exemplos serão realizados utilizando um repositório local. Em razão disso, você poderá criar o arquivo "history" no seguinte diretório: "C:\CVSROOT\CVSROOT". Adicionalmente, para garantir a integração com o CVS, ao final da instalação do CVSTrac é iniciado um processo automático para pesquisar e importar os repositórios CVS disponíveis no seu computador. De qualquer maneira, se for necessário você poderá criar novos bancos de dados do CVSTrac para outros projetos como pode observado na Figura 12. Uma vez finalizada a configuração do banco de dados do CVSTrac, você poderá clicar no botão "Browse" para navegar na página principal do seu projeto ou digitar a seguinte URL no seu browser: "http://localhost:2040/CVSROOT/". O projeto exemplo criado para este artigo chama-se "CVSROOT" e para fins didáticos, todas as configurações default foram mantidas. Dessa forma, quando a tela de "Login" for exibida, digite o usuário padrão "setup" e senha "setup" para ter acesso à página principal do CVSTrac. Na página principal, você poderá ter acesso as principais funcionalidades do CVSTrac, assim como o cadastro de usuários e as configurações dos parâmetros globais, conforme o exemplo apresentado na Figura 13.


Figura 12. Associando um banco de dados do CVSTrac a um projeto armazenado no repositório do CVS.


Figura 13. Página principal do CVSTrac. Cadastro de Bugs

De maneira geral a página de cadastro de bugs é bastante objetiva e intuitiva, como pode ser visto na Figura 14. O bug ou defeito, na perspectiva do CVSTrac, é chamado de Ticket. A página de cadastro de bugs do CVSTrac apresenta os campos padrões que são utilizados em outros aplicativos de gerenciamento de bugs, como por exemplo o Bugzilla. Com base nesses campos, o CVSTrac realiza o workflow do ciclo de vida de um bug, assim como qualquer outro aplicativo de gerenciamento de bugs. Em resumo, na Tabela 2, você verá a descrição dos campos fornecidos por default pelo CVSTrac. O CVSTrac permite que você customize o valor de todos os seus campos default e, além disso, permite que você adicione novos campos conforme a sua necessidade.


Figura 14. Cadastro de Bugs.


Tabela 2. Campos da página de cadastro de bugs.

Geração de Relatórios

O CVSTrac fornece um módulo de geração de relatórios e listagens de todos os bugs cadastrados no seu banco de dados. Existe vários relatório pré-definidos por default, no entanto, você poderá criar relatórios personalizados por meio de um mecanismo onde você insere consultas SQL para buscar os dados que você desejar, como pode ser visto no exemplo apresentado na Figura 15.


Figura 15. Relatório de Bugs.

Timeline

Por meio do CVSTrac, você poderá gerar um Timeline que representa uma listagem das mudanças ao longo do tempo, como pode ser visto na Figura 16. Observe ainda que, o Timeline fornece entre outras informações, um histórico sobre a evolução de um projeto tanto no ponto de vista do controle de versões quanto do rastreamento de bugs. Em outras palavras, você poderá visualizar ao longo do tempo todos os bugs cadastrados, as mudanças do status dos bugs, assim como o momento em que programador corrigir o bug e submeter a sua modificação ao repositório CVS. No entanto, para garantir a integração entre o CVSTrac e o CVS, lembre-se de escrever o número do bug no campo Comentário "Comments" quando for submeter as modificações. Suponha que você está corrigindo o bug número dois que está cadastrado no CVSTrac. Neste cenário, no momento em que você submeter esta modificação, além do comentário descrevendo o que você está modificando, você deverá escrever também "#2", o que indica para o CVSTrac que esta modificação corrige o bug número dois, como pode ser observado na Figura 17.


Figura 16. Timeline das mudanças ao longo do tempo.


Figura 17. Submetendo a correção de um bug ao repositório CVS.

Wiki

Além dos recursos mencionados anteriormente, o CVSTrac também oferece um Wiki integrado. Você poderá criar e editar páginas Wiki com informações sobre o seu projeto, dicas ou qualquer outro tipo informação utilizando tags Wiki e tags HTML, como pode ser visto na Figura 18. É importante lembrar que o Wiki é totalmente integrado a todas as outras funcionalidades oferecidas pelo CVSTrac e as modificações realizadas nas páginas do Wiki também podem ser exibidas no Timeline.


Figura 18. Página Wiki.

Conclusão

Nesse artigo foram apresentados alguns dos principais recursos oferecidos pelo TortoiseCVS e pelo CVSTrac. Com base nessas informações você já estará apto para iniciar o controle de versões dos seus projetos, aumentando assim a confiabilidade e a rastreabilidade do seu trabalho. Se você desejar conhecer os demais recursos oferecidos pelo CVS, vale a pena dar uma lida no livro CVS: Controle de Versões e Desenvolvimento Colaborativo de Software, escrito por mim (veja a seção links para maiores informações). Em virtude da sua proposta, este livro não tem a intenção de ser um guia de comandos do CVS; o principal objetivo é fornecer uma visão abrangente de todas as funcionalidades do CVS, bem como os seus principais front-ends, procurando aliar conceitos teóricos e exemplos práticos do dia-a-dia. Adicionalmente, o apêndice fornece ao leitor uma visão geral das principais ferramentas de rastreamento de bugs, tendo em vista uma solução de apoio ao desenvolvimento de software abrangente e sistêmica por meio da união do controle de versões com o rastreamento de bugs.

Links

CVS: Controle de Versões e Desenvolvimento Colaborativo de Software
http://shop.linhadecodigo.com.br/livro.asp?id=351

CVSTrac homepage
http://www.cvstrac.org/

CVSTrac for Windows
http://download.cnpack.org/CVSTracNT.exe

CVS Professional Support and CVSNT
http://www.march-hare.com/cvspro/

TortoiseCVS homepage
http://www.tortoisecvs.org/download.shtml

Cristiano Caetano

Cristiano Caetano - É certificado CBTS pela ALATS. Consultor de teste de software sênior com mais de 10 anos de experiência, já trabalhou na área de qualidade e teste de software para grandes empresas como Zero G, DELL e HP Invent. É colunista na área de Teste e Qualidade de software do site linhadecodigo.com.br e da revista Engenharia de Software Magazine. Autor dos livros "CVS: Controle de Versões e Desenvolvimento Colaborativo de Software" e "Automação e Gerenciamento de Testes: Aumentando a Produtividade com as Principais Soluções Open Source e Gratuitas". O autor também é criador e mantenedor do portal TestExpert, maior comunidade brasileira sobre teste e qualidade de software, confira no seguinte endereço: http://www.testexpert.com.br.