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 CaetanoO 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.
Termo | Descrição |
Workspace, SandBox (Área de trabalho) | Termo usado para representar um diretório no computador cliente onde os arquivos de um projeto serão transferidos durante uma retirada. |
Repository (Repositório) | Local onde os arquivos submetidos ao controle de versões são armazenados. |
Revision (Revisão) | Termo usado para descrever a numeração atribuída pelo CVS a cada modificação de um arquivo. |
Release, Version (Liberação) | Termo usado para descrever a denominação atribuída a um conjunto de arquivos para identificar determinado ponto no tempo; sobretudo, quando se quer identificar um conjunto de novas características ou correções de um software. |
Commit (Entregar, Submeter) | Termo usado para descrever a transferência de um ou mais arquivos modificados da área de trabalho para um repositório. |
Checkout (Retirar, Recuperar) | Termo usado para descrever a retirada de um ou mais arquivos de um repositório para a área de trabalho. |
Diff (Comparação das diferenças) | Termo usado para descrever o processo de comparação das modificações entre revisões diferentes de um arquivo. |
Import (Importação) | Termo usado para descrever o processo de transferência dos arquivos de um projeto a um repositório, dando inicio ao controle de versões. |
Module (Projeto, Módulo) | Termo usado para descrever um nome simbólico associado a um conjunto de diretórios e arquivos que compõem um projeto a fim de facilitar o acesso e a manipulação. |
Branch (Ramo) | Termo usado para descrever o processo de divisão dos arquivos de um projeto em linhas de desenvolvimento independentes. |
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.
Campo | Descrição |
Summary | Breve descrição do defeito |
Type | Indica o tipo de defeito (Problema no código, Solicitação de melhoria, etc) |
Version | Número da versão ou build onde o defeito foi identificado |
Severity | Indica severidade do defeito |
Priority | Indica a prioridade do defeito |
Assigned To | Atribui o defeito a alguma pessoa |
Subsystem | Indica o módulo ou componente do sistema onde o defeito foi encontrado |
Derived From | Associa o defeito a um outro defeito já existente |
Detailed Description | Descrição detalhada sobre o defeito e como reproduzi-lo. O texto digitado neste campo pode ser formatado usando wiki style. |
Attach | Permite anexar arquivos ao defeito |
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
- Controle de Releases em Equipes Simplificado usando VS 2005/2008 e TortoiseControle de Versão
- Controlando Versões: Team Foundation Version Control (TFVC) - Check Out e WorkspaceControle de Versão
- Conhecendo o Visual Studio Team System Source ControlControle de Versão
- Trabalhando com PHP e CVS no EclipsePHP
- Quem mexeu no meu código?Controle de Versão