Controle de Versão com Subversion

Resultado de imagem para subversion

"Enterprise-class centralized version control for the masses" - Apache™ Subversion®


O Apache Subversion, conhecido por SVN é um sistema de controle de versão desenhado especificamente para ser um substituto moderno do CVS, que apresentava algumas limitações, como por exemplo não permitir que arquivos e repositórios fossem renomeados ou movidos a partir do cliente ou ainda que dois usuários atualizem o mesmo arquivo ao mesmo tempo.
Entre as funcionalidades deste sistema estão:   
  • Versionamento de diretórios;
  • Versionamento de renomeação, cópia e exclusão;
  • Commits atômicos;
  • Merge tracking;
  • Bloqueio de arquivos;
  • Resolução de conflitos interativos.        

Quando utilizar o SVN?

Como um sistema centralizado, o SVN atende de forma satisfatória as equipes grandes de desenvolvimento. Baseia-se em arquitetura Cliente-Servidor e, em equipes com acesso local ao repositório central, o tempo de resposta do processamento é aceitável.
A utilização do SVN pode ser um problema para equipes geograficamente distribuídas, visto que a arquitetura utilizada por ele pode significar uma limitação de performance, conexão e de acesso para os membros da equipe.

Resultado de imagem para subversion
Fonte: www.ovh.ie

História

A empresa CollabNet deu início ao desenvolvimento do SVN no início dos anos 2000, a ideia inicial era utilizar a base do CVS, mas em decorrência da quantidade de bugs encontrada pela equipe, optou-se por iniciar a construção do zero. O objetivo era encontrar melhores soluções para o gerenciamento de versões analisando as limitações do CVS.
A primeira versão foi concluída em 2001, inclusive sendo utilizada pela equipe para gerir o próprio código. Em 2009 o software foi integrado à Apache Software Foundation e em 2010, quando passou a ser largamente utilizado em projetos de nível superior da apache, o sistema foi rebatizado para Apache Subversion. Está disponível em <http://subversion.apache.org>.

Trabalhando com o Apache Subversion


Para começar a trabalhar com o SVN é importante conhecer o conceito das principais ações a serem realizadas por meio do sistema. São as seguintes:

Repositório: é uma referência a um banco de dados que contém todos os arquivos versionados com seu histórico completo. Trata-se de uma cópia mestre de todos os seus dados. Fica alocado num servidor de arquivos que roda num servidor Subversion.

Cópia de trabalho: é o local onde o projeto é produzido, uma cópia do projeto na máquina do desenvolvedor. Não guarda todo o histórico do projeto, mas uma cópia das modificações realizadas localmente. O desenvolvedor pode baixar a última versão do repositório, seguir com a produção localmente e ao completar as mudanças necessárias, enviá-las de volta ao repositório.

Checkout: Download de um projeto no servidor para a máquina local, de modo que os arquivos possam ser trabalhados.

Import: Transferência de arquivos de outro projeto para o repositório. Deve ser seguido de um checkout.

Export: Upload de um projeto que não tem vínculo com o SVN para o repositório.

Commit: Envio das modificações realizadas no ambiente local para o servidor SVN.

Update: Atualização da cópia local, utilizando a última versão presente no servidor SVN.

Revision: Número sequencial que identifica cada uma das alterações ou conjunto de alterações realizadas em um repositório.

HEAD: É a revisão mais recente do repositório.

Diretórios especiais: São três tipos de diretórios especiais com funções definidas:
  1. trunk: versão funcional mais recente do projeto.
  2. branches: versões de desenvolvimento paralelo oriundas do trunk, porém isoladas deste. Deve ser utilizado quando uma implementação trouxer o risco de afetar a integridade do trunk.
  3. tags: utiliza etiquetas para facilitar a localização de revisões. Cada etiqueta possui um nome único que a identifica, sendo criada como um diretório, sempre através do trunk.


Branch/Tag: Refere-se à geração de branches ou tags a partir de um trunk ou geração de um branch a partir de uma tag ou outro branch.

Merge: Refere-se à mesclagem de revisões entre os diretórios especiais. Sempre deve ser realizada com a cópia de trabalho apontando para o destino do merge.

Switch: Alteração do repositório utilizado por uma cópia de trabalho. É realizada uma atualização ou mesclagem dos arquivos para assegurar que a cópia de trabalho contenha exatamente o conteúdo do novo repositório mais quaisquer alterações locais.

Relocate: Realocação do endereço de um repositório. Apenas atualiza o endereço, sem realizar nenhum tipo de atualização nos arquivos.

Comandos para Linux:

Abaixo estão listados exemplos de linhas comandos para trabalhar com SVN pelo prompt. São comandos para sistemas Linux, podem variar de acordo com a distribuição que se estiver utilizando.

Listar os comandos do SVN:
  $ svn --help

Adicionar diretório:
  $ svn add directory

Adicionar arquivo:
  $ svn add arquivo

Commit de arquivos ou diretórios locais no repositório SVN:
  $ svn commit filename
  $ svn commit --message "Message" filename

Deletar arquivo do repositório:
  $ svn delete filename
  $ svn delete directory

Bloquear arquivo para garantir acesso exclusivo:
  $ svn lock filename -m "comment as to why its locked or by whom"
Mostrar as mensagens do log do SVN:
  $ svn log filename

Mostrar status das mudanças em um arquivo:
  $ svn status

Trazer todas as atualizações do repositório SVN para sua cópia local:
  $ svn update

Ferramentas de apoio:

Além do prompt de comando existem diversas ferramentas de apoio que tornam o trabalho mais intuitivo:

  • Apache Subversionversão oficial do Subversion.
  • VisualSVN Server: implementação em Windows, possui ambiente gráfico de gerenciamento e permite visualização do conteúdo dos repositórios diretamente pelo navegador.
Menu da ferramenta gráfica TortoiseSVN.
Fonte: www.intentor.com.br

  • TortoiseSVN: Ferramenta gráfica para utilização do SVN em ambiente Windows.
  • RabbitVCS: Ferramenta gráfica para utilização do SVN em Linux inspirada no TortoiseSVN facilita o gerenciamento do projeto diretamente no Nautilus. Commit Monitor: trás o diferencial de emitir alertas a cada commit realizado nos repositórios SVN.
  • CruiseControl e CruiseControl.NET: são ferramentas de Integração Contínua, oferecem controle de versão como parte da tarefa de integração.

FONTES:







Comentários

Postagens mais visitadas