sistemas de controle de versão

23
Sistemas de Controle de Versão Conceitos, Subversion e prática Édipo Oliveira Maciel Jonathas Silva Leonardo Alexandre

Upload: jonathas-silva

Post on 09-Jun-2015

914 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Sistemas de Controle de Versão

Sistemas de Controle de VersãoConceitos, Subversion e prática

•Édipo Oliveira Maciel•Jonathas Silva•Leonardo Alexandre

Page 2: Sistemas de Controle de Versão

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?

Page 3: Sistemas de Controle de Versão

E agora?!

Page 4: Sistemas de Controle de Versão

Roteiro

1. Conceito2. Terminologias e Comandos;3. Características e Usabilidade;4. Subversion;5. Comandos principais e específicos;6. Na prática;

Page 5: Sistemas de Controle de Versão

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.

Page 6: Sistemas de Controle de Versão

Idéia Geral

Page 7: Sistemas de Controle de Versão

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

Page 8: Sistemas de Controle de Versão

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;

Page 9: Sistemas de Controle de Versão

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

Page 10: Sistemas de Controle de Versã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;

Page 11: Sistemas de Controle de Versão

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;

Page 12: Sistemas de Controle de Versão

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.

Page 13: Sistemas de Controle de Versão

Centralizado

Page 14: Sistemas de Controle de Versão

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.

Page 15: Sistemas de Controle de Versão

Tipos de SCV - Distribuído

Page 16: Sistemas de Controle de Versão

Ferramenta Subversion

Page 17: Sistemas de Controle de Versão

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

Page 18: Sistemas de Controle de Versão

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);

Page 19: Sistemas de Controle de Versão

Características

•As revisões são sempre

globais,começando em 0

(com o repositório vazio)

Page 20: Sistemas de Controle de Versão

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;

Page 21: Sistemas de Controle de Versão

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;

Page 22: Sistemas de Controle de Versão

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;

Page 23: Sistemas de Controle de Versão

Praticando...