sexta-feira, novembro 18, 2005

Ambientes de desenvolvimento de software - Parte V

Finalmente a continuação de nossa série sobre ambientes de desenvolvimento de software open source para o suporte a práticas de engenharia de software e metodologias ágeis e iterativas! Antes de começar gostaria de agradecer pelos comentários já feitos ou emails enviados. Gostaria de receber mais feedbacks daqueles que fizerem a leitura dessa série de artigos e saber se conseguiram realizar todas as atividades relacionadas. Também tenho interesse de saber se as informações lidas aqui foram utilizadas em projetos reais dentro de empresas ou projetos open source. O objetivo é exatamente ajudar nos passos iniciais dessa grande aventura de ajudar pequenas e médias empresas a melhorar seu processo de desenvolvimento de produtos de software com gastos baixos e garantindo realmente um aumento de produtividade e qualidade do software! Podem deixar um comentário aqui e/ou então me mandar um email. Assim inclusive posso dar um retorno e conhecê-los!

Hoje iremos comentar um pouco sobre como usar alguns recursos básicos do Subversion. O foco deste artigo está limitado ao escopo de demonstrar como é possível ter um bom ambiente integrado de desenvolvimento. Portanto não vamos falar em todos os recursos do Subversion e os muito importantes como tags, branches e merges. Falaremos naqueles que nos ajudarão a demonstrar as integrações e também que são utilizados no dia a dia dos desenvolvedores. Para informações detalhadas de cada recurso é possível consultar o livro disponível on-line Version Control with Subversion. Porém o livro que recomendo fortemente para facilitar o uso do Subversion e definir um plano de como realizar a gestão de configuração no projeto é o livro Pragmatic Version Control Using Subversion. Outro que recomendo fortemente é Subversion Version Control : Using the Subversion Version Control System in Development Projects . E é claro que implantar um processo de controle de versões e gestão de configuração requer um time preparado e que entende as necessidades desse tipo de software. Estamos à disposição para treinamentos e mentorings específicos em horários diferenciados :-) !

Primeiro é importante entender o conceito usado pelo Subversion para numerar as versões(chamadas de revisões no Subversion) inseridas no repositório. Os sistemas de controle de versão tipicamente se utilizam de um dos dois tipos de numeração: por arquivo e de repositório. No esquema por arquivo cada arquivo pode estar em uma revisão diferente. Já no esquema de repositório, a qualquer mudança ocorrida o número de revisão do repositório é incrementado. Esse segundo formato é o usado pelo Subversion. Cada um dessas revisões também pode ser chamada de changeset, porque representam um conjunto de mudanças ocorridas em uma revisão. Como será visto pelas análises dos logs e no próximo artigo sobre o WebSVN, essa forma de controlar os fontes facilita e deixa mais claro que mudanças ocorreram de uma revisão a outra.

Mas chega de conversa e vamos iniciar nosso trabalho!!! Inicie abrindo um prompt do DOS e emita os comandos conforme a figura abaixo:



O Subversion criará alguns diretórios dentro do diretório rep_exemplo. Verifique com um dir ou através do Windows Explorer se eles foram criados. Um deles se chama "hooks".

Agora crie um diretório para se tornar sua cópia local do repositório. Eu criei um chamado work_exemplo no diretório C: . Crie três diretórios dentro dele chamados: trunk, tags e branches. Esse é um dos padrões utilizados em diversos projetos open source e comerciais usando o Subversion. Para simular o uso do Subversion também para diretórios crie outros dois diretórios dentro de trunk: source e inc. Sua estrutura ficará como na figura abaixo:



Dentro do diretório source crie três arquivos e no diretório inc crie um quarto. Coloque algum conteúdo dentro destes arquivos. No meu caso criei os arquivos teste1.txt até teste4.txt. Portanto teremos os arquivos conforme a figura abaixo:



Agora vamos clocar os arquivos que estão fora de nosso repositório dentro dele. E para isso já contaremos com a ajuda de nosso TortoiseSVN. Clique com o botão direito no diretório work_exemplo, procure no menu a opção TortoiseSVN e dentro dela haverá a opção "Import...", conforme tela abaixo:



Procure o diretório onde o repositório foi criado e inclua alguma mensagem para histórico. Os arquivos serão então importados para o repositório conforme figuras abaixo:





Agora faremos uma coisa ousada :-) ! Vamos apagar o conteúdo do diretório work_exemplo e ficar com ele apenas vazio. Agora clique com o botão direito no repositório e vá na opção SVN Checkout...

Essa tela será apresentada:



Clique em "Show Log" para ver a mensagem e o histórico da sua importação:



Aceite o checkou e veja a tela:



Abracadabra!!! Agora os nossos diretórios e arquivos reapareceram. O que aconteceu? O TortoiseSVN foi até o repositório e recuperou os arquivos da última revisão (no caso a revisão 1 de importação) e trouxe para sua cópia local. Lembre-se que isso pode estar ocorrendo em uma rede, com o repositório residindo em outra máquina ( há outras configurações que devem ser feitas mas elas não serão abordadas neste artigo. Consulte os livros citados no início ). E no Windows Explorer eles aparecerão com uma marca. Essa marca demonstra que os arquivos não sofreram nenhuma alteração ainda na sua cópia de trabalho.

Vamos testar o comportamento do Subversion? Altere um dos arquivos do diretório source (no meu caso o teste1.txt). Se você verificar no Windows Explorer agora verá que o arquivo modificado fica com outro sinal, demonstrando que ele não está mais coerente com o último checkout feito!



Se você subir os níveis da sua hierarquia de diretórios verá que os diretórios trunk e work_exemplo também estão marcados. Esse é um excelente recurso visual que o TortoiseSVN nos fornece para facilitar a detecção de mudanças. Vamos então colocar nossa alteração no repositório central para que todos os desenvolvedores tenham acesso! Clique com o botão direito e escolha a opção SVN Commit. Coloque algum dado de histórico e clique Ok.





Agora outros desenvolvedores podem ter feito alguma alteração em algum dos códigos. Uma boa prática depois de fazer um commit é então fazer um comando SVN Update. Vamos fazer isso agora e garantir que estamos trabalhando em sincronia com o repositório. Pronto! Nossa cópia está toda "verde"!

Vamos agora ver o que aconteceu? Clique com o botão direito no diretório work_exemplo e escolha a opção Show Log do TortoiseSVN. Clicando em cima de cada revisão que aparece no repositório você verá tudo que ocorreu com cada arquivo e diretório naquela revisão. Agora todo o time, o gerente do projeto e stakeholders interessados podem ter visibilidade do que está acontencendo no dia a dia do projeto!

Outro comando fascinante é o Blame. Este só pode ser usado em um arquivo e não em um diretório. Ele mostra o seu arquivo e em cada linha de código coloca o nome de quem fez a última modificação e em qual revisão esta entrou!

Outro comando do TortoiseSVN é o Revision Graph. Ele mostra de maneira visual as mudanças nas revisões e ainda permite que você faça comparações entre elas. Para fazer isso basta escolher duas revisões, clicar com o botão direito e escolher a opção Compare Revisions.





Pronto! Uma visão rápida do básico do Subversion. No próximo artigo mostraremos como instalar e configurar o WebSVN, uma excelente ferramenta para visualizar repositórios Subversion usando um browser e que será uma base fundamental para uma integração mais interessante entre o sistema de rastreamento e controle de bugs e o Subversion!

Marcadores:

9 Comentários:

At 8:36 AM, Anonymous Fernando disse...

Sr. José Papo, estou utilizando muito o seu artigo pois estou tentando instalar o Subversion aqui em casa para fazer testes, por interesse pessoal mesmo. Á instalação foi uma belaza, tudo ok, mas estou apanhando um pouco com as funcionalidades do TortoiseSVN, pois parece ter funções iguais, aliás muito parecidas, o Sr. tem alguma referencia em português para eu dar uma olhada?
Agradeço e Parabenizo, T+

 
At 9:06 AM, Blogger José Paulo Papo disse...

Olá Fernando. O livro on-line e gratuito do Subversion tem uma versão em português. É uma das melhores referências sobre a ferramenta. O link é: http://svnbook.red-bean.com/index.pt_BR.html

 
At 11:49 AM, Anonymous Fernando disse...

José Papo, outra pergunta, o surversion que instalei como a referencia do seu artigo não está configurado no servidor né? Como faço para acessá-lo pela rede, tem alguma referencia?

 
At 3:53 PM, Blogger José Paulo Papo disse...

Está configurado no servidor sim Fernando. Mas para ter acesso pela rede há uma série de opções. O jeito mais fácil é usar o svnserve. Leia aqui: http://svnbook.red-bean.com/nightly/en/svn.serverconfig.svnserve.html . Há também opção de acesso via HTTP e HTTPS.

 
At 3:47 PM, Anonymous Fábio disse...

Zé Paulo,

Muito obrigado pelo texto. Eu apanhei que só pra instalar CVS e estava desconfiado que seria a mesma coisa com o Subversion.

Sua alma vai pro céu.. hehhe

Um abraço!

 
At 6:10 PM, Blogger extra caseiras disse...

Este comentário foi removido pelo autor.

 
At 6:13 PM, Blogger extra caseiras disse...

Este comentário foi removido pelo autor.

 
At 6:15 PM, Anonymous Glauston disse...

José Paulo, acredito que possa me ajudar com algumas situações que estou tentando resolver. Vamos lá:
1) Tenho o arquivo svnserve.conf, onde tenho a seguinte configuração;
anon-access = none
auth-access = write
password-db = passwd
# authz-db = authz
Queria habilitar esta última opção e tratar os acessos dos usuários e grupos através do arquivo authz, mas não funcionou.
2) Estou tentando ver como posso fazer uma limpeza períódica dos log´s (históricos de revisão), para gravar no nosso ambiente corporativo.
3) Não sei se existe esta opção, de enviar um e-mail para um grupo previamente cadastrado, caso alguém dê um commit para o repositório.
Fico muito grato com qualquer ajuda que possa vir a fornecer.
Um abraço!!!

 
At 10:40 AM, Blogger Célio disse...

O projeto de tradução do livro oficial do Subversion foi movido recentemente para o Google Code em http://code.google.com/p/svnbook-pt-br/

O grupo está aberto para receber novos tradutores voluntários. Veja maiores informações no link acima.

Abraços!

 

Postar um comentário

Links para este artigo:

Criar um link

<< Home


Veja as Estatísticas