Subversion (SVN)
O Apach subverion (SVN) é um sistema de controle de versão, desenhado para substituir o CVS(concurrent version system, ou sistema de versões concorrentes) em suas limitações.
Índice |
Conceito
Sistema de controle de versão (ou versionamento), tem por objetivo gerenciar diferentes versões no desenvolvimento de um documento qualquer. São comumente utilizador no desenvolvimento de software para controlar diferentes versões (de códigos-fonte e de documentações). O Subversion é um sistema de controle de versões que utiliza conceito como: Trunk, Branches e Tags.
Repositório
É o "coração" de qualquer sistema de controle de versão. É o principal lugar onde os desenvolvedores podem guardar seu trabalho, onde não depositam apenas arquivos como também histórico do desenvolvimento.
Trunk
A pasta trunk contém os projetos que estão em desenvolvimento. Nela será salva, diariamente, as atualização efetuadas.
Branches
É a pasta que contém "linhas de desenvolvimento" de um determinado projeto, podem haver poucas diferenças entre elas, porém uma independe da outra. No momento que a equipe decide que o projeto esta pronto para ser liberado como uma versão, a pasta trunk é copiada à pasta Branch e dado nome de versão. Este branch é congelado e não sobre mais alterações, apenas correções e testes.
Tags
Quando testes são efetuados em um branch e concluídos, a versão em que se encontra é copiada à pasta tags, formando uma versão liberada, ou release. Nesse momento a pasta tag é empacotada e enviada ao cliente. Qualquer alteração feita na pasta branch, deve ser enviada a pasta tag após a finalização dos testes. SVN considera tag apenas uma variação de um branch, na prática é isso mesmo, ela é uma cópia exata de uma branch, apenas uma ramificação atual da árvore de versões.
Working copy
É uma cópia do repositório. O repositório é compartilhado por todas equipe, onde não pode ser modificada diretamente. A working copy é um local de trabalho privado onde os desenvolvedores podem fazer seu trabalho de forma isolada do resto do seu time.
Objetivos
- Permitir desenvolvedores a trabalhar simultaneamente;
- Não subscreve qualquer mudança;
- Mantém histórico de versalização de tudo e de qualquer mudança.
Categorias
- Centralized version control system (CVCS) ou sistemas de controle de versão centralizado:
- Se baseia na ideia de uma cópia central do projeto salvo em algum lugar (provavelmente num servidor), onde os desenvolvedores irão submeter suas mudanças e novas versões a essa cópia central.
- Destributed/Decentralized version control system (DVCS) ou sistemas de controle de versão distribuído/descentralizado.
- Permite que vários desenvolvedores trabalhem em um projeto sem que eles compartilhem um ambiente de trabalho.