Controle de Versões com SVN

O Subversion ou simplesmente SVN, é um sistema de controle de versão desenvolvido para ser o substituto do CVS (Concurrent Version System – Sistema de Versões Concorrentes). É um software com a finalidade de gerenciar diferentes versões no desenvolvimento de um documento qualquer. Esses sistemas são comumente utilizados no desenvolvimento de software para controlar as diferentes versões – histórico e desenvolvimento – dos códigos-fonte e também da documentação.

Terminologias

Para uma melhor compreensão, a seguir são apresentadas algum termos bastante utilizados quando trabalhamos com o Subversion.

Repositório – É o nome dado à localização central dos dados versionados. Nele são guardados todos os arquivos do projeto que são versionados. O repositório tem por característica manter o histórico de todas as alterações (linha do tempo), permitindo consultar qualquer estado dos arquivos;
Cópia de trabalho – Cópia do conteúdo do repositório em um determinado tempo (uma determinada revisão) onde o desenvolvedor faz as alterações nos seus arquivos. Uma cópia de trabalho é obtida através do processo de checkout, e por padrão é obtido do tronco (trunk) do repositório.
Revisão – É um código numérico responsável por identificar o estado do repositório em um determinado instante. A cada novo commit esse código é incrementado.
Tronco (Trunk) – Linha onde ocorre o desenvolvimento principal do projeto. Todo o projeto é desenvolvido no trunk até que uma versão estável seja liberada, onde será criada uma Tag.
Ramificações (Branches) – São bifurcações do tronco (ou de outra ramificação). Na prática, é uma cópia do trabalho desenvolvido no tronco do repositório para edição paralela. Alterações realizadas em um branch podem ser mescladas (merge) ao tronco do desenvolvimento ou a outra ramificação.
Rótulos (Tag) – Marca atribuída ao estado do repositório (ou parte dele – módulo) em determinado momento. Essa marcação é bastante útil para encontrar revisões específicas no repositório, como por exemplo, releases ou versões estáveis do sistema.

Ciclo de trabalho

Passo Descrição
1 – Obter conteúdo Primeira etapa para trabalhar com um sistema de versionamento. Basta ser realizada uma única vez. Nesse ponto, o usuário efetua uma cópia do conteúdo do servidor e passa a ter uma cópia local (cópia de trabalho). Por padrão, ao realizar o checkout, a revisão mais atual é obtida, porém nada impede que seja informado a revisão desejada.
2 – Efetuar modificações Nessa etapa, o desenvolvedor realiza seu trabalho. Por exemplo: desenvolve um novo método, refatora um método existente, implementa uma nova interface e etc.
3 – Ver alterações no repositório Nesse ponto, o desenvolvedor tem a oportunidade de verificar o status de todos os arquivos versionados, assim poderá detectar quais (e porquê) estão divergindo da versão presente no servidor SVN.
4 – Atualizar cópia local Deve ser realizada todos os dias antes de começar a desenvolver as atividades. Isso garantirá que o desenvolvedor estará iniciando o trabalho diário com o código mais recente.
5 – Mesclar modificações Resolver conflitos É necessário quando observa-se que a cópia de trabalho não é a mais recente existente no repositório. Quando isso ocorre, conseqüentemente ocorrem erros (conflitos). Cabe ao desenvolvedor solucionar tais conflitos antes de realizar o commit.
6 – Submeter alterações Esse procedimento deve ser realizado todos os dias, ao final do expediente, logo após todos os testes terem sido executados com sucesso. Código não testado não deve ser enviado para o servidor.

Clientes SVN

Para utilizar um repositório SVN e ter uma maior produtividade, é necessário fazer uso de um cliente SVN. Existem clientes SVN para os mais variados ambientes: linha de comando, ambiente gráfico, Windows, Linux, Mac e etc. O cliente adotado pelo projeto é o plugin Subversive para a IDE Eclipse. Com ele, é possível ter todos os recursos que o SVN provê sem ter que sair do ambiente de desenvolvimento e sem ter que conhecer a sintaxe dos comandos.

Instalando o plugin no Eclipse

Para instalar o plugin do Subversive na IDE Eclipse Ganymede no Linux, acesse o menu: Help > Software Updates…

Na janela que se abrirá: ‘Software Updates and Add-ons’, selecione a aba ‘Avaliable Software’ e clique no botão ‘Add Site…’

Clique no botão ‘Add Site’, e no campo Location, digite: http://download.eclipse.org/technology/subversive/0.7/update-site/ e clique em ‘OK’;

Novamente clique no botão ‘Add Site’ e agora digite: http://www.polarion.org/projects/subversive/download/eclipse/2.0/update-site/ e clique em ‘OK’;

Após adicionar os dois novos sites, selecione os plugins como mostrado nas figuras a baixo:

Após selecionar todos os componentes que deverão ser instalados, clique no botão ‘Install’ e aguarde enquanto o Eclipse verifica as dependências. Na janela ‘Install’ que será aberta após as verificações, clique em ‘Next >’;

Ainda na janela ‘Install’, marque a opção ‘I accept the terms of the license agreements’ e clique em ‘Finish’;

Ao término da instalação, surgirá uma janela perguntando se o usuário gostaria de reiniciar o Eclipse, clique em ‘Yes’ e aguarde o reinício do Eclipse.

Configurando um Repositório no Eclipse

Para configurar um repositório utilizando o plugin Subversive no Eclipse, inicie abrindo a perspectiva SVN Repository Exploring, para isso, acesse o menu Window > Open Perspective > Other…

Na janela Open Perspective, selecione a perspectiva ‘SVN Repository Exploring’ e clique em ‘OK’.

Com a nova perspectiva aberta, na aba SVN Repositories, clique no botão ‘New Repository Location’ para adicionar o repositório no qual irá trabalhar.

Para utilizar o repositório solicite o endereço do SVN ao administrador de redes ou ao professor orientador, na janela ‘New Repository Location’, na aba General, informe a URL do repositório e na região da autenticação, informe o usuário e a senha de acesso ao repositório depois clique em Finish:

Em seguida será apresentado, na aba SVN Repositories, o repositório adicionado:

Operações do SVN

Checkout

Para fazer o checkout, basta selecionar o(s) projeto(s) desejado(s), clicar com o botão direito do mouse e clicar em ‘Check Out’:

Ao voltar para a perspectiva JavaEE, o projeto selecionado está listado na aba Project Explorer:

Update

Para fazer o update, selecione o(s) projeto(s) e/ou arquivo(s) desejado(s), clique com o botão direito do mouse, acesse ‘Team’ e clique em ‘Update’:

Commit

Para fazer o commit, selecione o(s) projeto(s) e/ou arquivo(s) desejado(s), clique com o botão direito do mouse, acesse ‘Team’ e clique em ‘Commit’. Uma outra janela aparecerá, para que os arquivos a serem “commitados” sejam selecionados e comentário da revisão seja feito. Depois de selecionar os arquivos e preencher a caixa do comentário (opcional), clique em ‘OK’:

Sincronização com o repositório

Para fazer uma sincronização com o repositório, selecione o que deseja sincronizar, clique com o botão direito do mouse, acesse ‘Team’ e clique em ‘Sincronize with Repository’. O Eclipse vai verificar se há mudanças entre a versão local dos arquivos e a versão remota (a que está atualmente no repositório). Em seguida, solicitará que a perspectiva seja mudada para a ‘Team Synchronizing perspective’. Escolha ‘Yes’:

Os arquivos que foram alterados aparecerão na aba ‘Synchronize’. Para mostrar a comparação, clique duas vezes no arquivo que deseja sincronizar:

Uma outra aba será exibida, mostrando o arquivo local (Local File) e o arquivo remoto (Remote File), lado-a-lado, e as suas diferenças em destaque. Nessa mesma aba, o arquivo local pode ser alterado, para adicionar trechos de códigos que estão no remoto, por exemplo.
Se desejar sobrescrever o arquivo local com o conteúdo do remoto, basta clicar nele com o botão direito e em seguida em ‘Override and Update’. Se quiser fazer o contrário (sobrescrever o arquivo remoto com o conteúdo do local), clique em ‘Override and Commit’.

Organização SVN no DADT

• Estrutura do SVN
– TO-DO
• Regras de versionamento do produto
– TO-DO

  1. B arro Jul 8th, 2014 @ 11:47 | #-49

    :mrgreen: 😉 😎 😆

Submitting Comment, Give me a second...

Leave a comment

 

Allowed tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
Trackbacks & Pingbacks ( 0 )
  1. No trackbacks yet.