- Controle de versões – Parte I
- Controle de versões Parte II – CVS/SVN
- Controle de versões Parte III – DVCS
- Tutorial git
Os primeiros sistemas de controle de versões modernos possuíam arquitetura cliente-servidor e eram, portanto, centralizados. Isso significa que existe um repositório central onde o código fonte fica salvo. Cada desenvolvedor baixa uma cópia, edita e, quando necessário, envia novamente ao servidor.
O CVS – Concurrent Version System (Sistema de Versões Concorrentes) é um dos sistemas mais conhecidos dessa categoria. Como seu nome diz, é um sistema concorrente onde várias pessoas podem editar o mesmo código ao mesmo tempo, uma vez que cada desenvolvedor faz uma cópia local.
Outro sistema muito conhecido é o SVN – Apache Subversion, que foi especialmente desenvolvido para ser um substituto compatível do CVS.
Os commandos básicos para o uso desse sistema são:
- Checkout – Faz uma cópia local do projeto remoto;
- Commit – Envia alterações local ao projeto remoto;
- Update – Faz uma leitura do projeto remoto e atualiza a cópia local.
Num repositório padrão SVN, você encontrará três diretórios:
- trunk – É a ramificação principal. Normalmente ele é usado como a linha principal de desenvolvimento do projeto;
- tags – Para cada release de testes, release para o cliente ou por algum motivo que haja a necessidade de se marcar uma versão, cria-se uma tag que é salvo nesse diretório;
- branches – Para cada ramo adicional que o desenvolvedor tenha necessidade de criar, salva-se nesse diretório.
Normalmente usa-se o SVN com a interface gráfica Tortoise SVN, o que facilita bastante no seu uso no dia-a-dia. Com o SVN/Tortoise é possível facilmente ver o log de alterações nos arquivos, as ramificações, controlar as versões, criar branches, fazer commits, etc.
Basicamente as vantagens desse sistema são:
- Gratuito
- Fácil de entender
- Fácil de instalar e usar
- Interface gráfica simples e intuitivo (com Tortoise SVN)
E as desvantagens são:
- Dependente do servidor. Em caso de pane no servidor é impossível fazer um update ou commit
- A cada commit é necessário se conectar ao servidor o que torna o sistema lento
- Caso um arquivo seja renomeado seu histórico de alterações é perdido
- Difícil de se usar com grandes equipes ou equipes remotas
No próximo post será abordado sobre DCVS – Distributed Concurrent Version System (Sistemas de Controle de Versões Distribuídos), que é uma nova geração de sistema de controle de versões.
E você leitor que usa SVN/Tortoise, como você tem usado essa ferramenta em seu trabalho? Tem alguma dica ou sugestão para melhorar ou facilitar o seu uso?