sistemas de controle de versão
TRANSCRIPT
Sistemas de Controle de VersãoConceitos, Subversion e prática
•Édipo Oliveira Maciel•Jonathas Silva•Leonardo Alexandre
Faça uma avaliação rápida da situação da sua equipe de desenvolvimento:
•Alguém já sobrescreveu o código de outra pessoa por acidente e acabou perdendo as alterações?
•Tem dificuldades em saber quais as alterações efetuadas em um programa, quando foram feitas e quem fez?
•Tem dificuldade em recuperar o código de uma versão anterior que está em produção?
•Tem problemas em manter variações do sistema ao mesmo tempo?
E agora?!
Roteiro
1. Conceito2. Terminologias e Comandos;3. Características e Usabilidade;4. Subversion;5. Comandos principais e específicos;6. Na prática;
Conceito
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-fontes e também da documentação.
Idéia Geral
Terminologia Básica• Repositório: Local onde são armazenados os
arquivos mantidos sob controle de versão;
• Área de trabalho: Cópia local dos arquivos de um repositório, utilizada para o desenvolvimento propriamente dito
• Módulo ou projeto: Conjunto independente de arquivos; normalmente um repositório é constituído de muitos módulos
Terminologia Básica•Check-out: Operação inicial de criar uma
área de trabalho a partir de um módulo do repositório;
•Update: Operação que atualiza a cópia local com eventuais mudanças ocorridas no repositório;
•Commit: Operação de efetuar mudanças em um repositório, também chamada de check-in;
Pontos positivos
• Possibilitar compartilhamento de código-fonte e desenvolvimento distribuído;
•Permitir controle de modificações e trabalho em paralelo
•Auxiliar na qualidade do código e em sua manutenção;
•Atrair novos colaboradores para projetos abertos e expor sua evolução
E mais...
•Monitorar e registrar todas as alterações em umou mais arquivos;
•Permitir que as alterações possam ser examinadas individualmente e revertidas caso necessário;
•Possibilita que a “imagem” de um arquivo possa ser obtida para qualquer instante de sua história;
Características de um SCV•Pode ser centralizado ou não, onde as
alterações sempre passam por um servidor central;
•Pode permitir somente armazenamento de arquivos texto ou também de binários;
•Pode implementar mecanismo de locking para evitar acessos simultâneos ou merging parapossibilitar edição concorrente;
•Pode dispor ou não de autenticação e controle de acesso;
Tipos de SCV - Centralizado
•O controle de versão centralizado segue a topologia em estrela, havendo apenas um único repositório central mas várias cópias de trabalho, uma para cada desenvolvedor. A comunicação entre uma área de trabalho e outra passa obrigatoriamente pelo repositório central.
Centralizado
Tipos de SCV - Distribuído
•São vários repositórios autônomos e independentes, um para cada desenvolvedor. Cada repositório possui uma área de trabalho acoplada e as operações commit e update acontecem localmente entre os dois.
Tipos de SCV - Distribuído
Ferramenta Subversion
Subversion
•Projeto livre mantido pela CollabNet •Iniciado em 2000•Tenta aprimorar o CVS e remover suas
limitações, contudo seguindo os mesmos princípios básicos
•É o provável substituto do CVS em projetos de Software Livre
•Versão atual: 1.2.1
Características
•É um sistema centralizado;•O repositório pode ser local ou remoto;•O acesso ao repositório é feito
indiretamente;•Permite fazer tanto locking quanto
merging;•Permite atribuir rótulos (tags);•Possibilita criar ramificações (branches);
Características
•As revisões são sempre
globais,começando em 0
(com o repositório vazio)
Vantagens
• Permite alterar nome, copiar ou mover arquivos preservando seu histórico;
•Faz versionamento para diretórios;•Commits são operações atômicas;•Arquivos binários são tratados
automaticamente e apenas as diferenças são armazenadas
•Suporta links simbólicos;•Branching é simples e eficiente;
Principais Comandos
•checkout: obter uma cópia de um diretório para a área de trabalho local;
•commit: enviar as alterações da cópia local para o repositório;
•update: atualizar a cópia local com eventuais mudanças do repositório;
•add/remove: adicionar e remover arquivos do repositório;
Principais Comandos
• import: importar para o repositório uma árvore de diretórios sem versionamento;
• info: exibir informações sobre o repositório ou arquivo especificado;
•diff: exibe alterações entre um arquivo e revisões anteriores;
•status: exibe o estado atual de cada arquivo, sem alterar a área de trabalho ou o repositório;
Praticando...