• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
GCS - Aula 07 - Sistemas de Controle de Versões
 

GCS - Aula 07 - Sistemas de Controle de Versões

on

  • 4,493 views

GCS - Aula 07 - Sistemas de Controle de Versões...

GCS - Aula 07 - Sistemas de Controle de Versões

Conceitos e Ferramentas

Disciplina de Gestão de Configuração de Software do Curso de Especialização em Engenharia de Software.

Statistics

Views

Total Views
4,493
Views on SlideShare
4,493
Embed Views
0

Actions

Likes
1
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    GCS - Aula 07 - Sistemas de Controle de Versões GCS - Aula 07 - Sistemas de Controle de Versões Presentation Transcript

    • Gestão de Configuração de Software - Controle de Versões -
        • ES06 – Especialização em Engenharia de Software
        • Prof.: Misael Santos (misael@gmail.com)
        • Ago/2010
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Agenda
      • Versionamento
      • Ações
        • Adicionar ao Controle de Versões
        • Checkout
        • Checkin
        • Update
        • Merge
        • Branching
      • Controle de Versões Distribuídos
      • Ferramentas
        • CVS
        • Subversion
        • Endevor
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Versionamento
      • Versionamento é a disciplina através da qual são preservadas as versões de um artefato, de modo sistemático e seguro, não limitado em número de versões.
      • Versão:
        • Estado definido de um objeto num dado momento.
        • “ Fotografia” do objeto.
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Versionamento >_ arquivo1.c document2.doc classeA.java 1 1 1 2 2 2 3 3 4 4 5 6 Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Ações
      • Adicionar ao Controle de Versões
        • Adicionar um elemento ao sistema de controle de versões gerando a sua primeira versão
        • Torna o elemento acessível aos usuários do repositório
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Ações
      • Checkout
        • Obter um elemento do sistema de controle de versões
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Ações
      • Checkout
        • Algumas ferramentas permitem dois tipos de checkout:
          • Reservado ( lock-modify-unlock )
            • Somente um usuário terá a posse do arquivo, não permitindo o trabalho simultâneo
            • Suas alterações irão constituir uma nova versão
          • Não reservado ( copy-modify-merge )
            • Vários usuários podem ter a posse do arquivo , permitindo o trabalho simultâneo.
            • Não é garantido que a sua versão será consolidada
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Ações
      • Checkin
        • Gravar as alterações no repositório gerando uma nova versão do elemento
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Ações
      • Checkin
        • Em algumas ferramentas chamado de Commit
        • Em casos de Checkout Não-reservado pode gerar conflito de versões
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Ações
      • Chekin x Conflitos
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Ações
      • Update
        • Obter uma versão mais recente do elemento do sistema de controle de versões
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Ações
      • Update
        • Não confundir “atualizar” com “versionar”
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Ações
      • Merge (Combinação)
        • Consiste em combinar alterações feitas por usuário distintos sobre o mesmo arquivo
      Versão A Versão B Versão Combinada Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Ações
      • Merge (Combinação)
        • Algumas ferramentas executam Merge Automático em casos onde não há conflitos (alterações no mesmo trecho de código)
        • Em caso de conflito o usuário terá que executar o merge entre a versão dele e a versão remota (do repositório)
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Ações
      • Branching (Ramificação)
        • Consiste em criar ramos paralelos de desenvolvimento ( branches )
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Ações
      • Branching (Ramificação)
        • Consiste em criar ramos paralelos de desenvolvimento ( branches )
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Ações
      • Branching (Ramificação)
        • Por default, existe pelo menos um branche em um projeto, o Principal, também conhecido como “ mainline “ ou “ trunk ” ou “ HEAD ”.
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Branching
      • Estratégias
        • Branch Per Release
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Branching
      • Estratégias
        • Code-Promotion Branches
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Branching
      • Estratégias
        • Branch Per Tasks
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Branching
      • Estratégias
        • Branch Per Component
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Branching
      • Estratégias
        • Branch Per Technology
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Branching and Merging Anti-Patterns
      • Merge Paranoia - Evitar merge a todo custo, geralmente com medo das consequências.
      • Merge Mania - gastar muito tempo realizando merge em elementos do software ao invés de desenvolvê-los.
      • Big Bang Merge - adiar o merge das branches até o final do desenvolvimento e tentar realizar o merge de todas as branches simultaneamente.
      • Never-Ending Merge - Executar atividades de merge continuamente porque sempre existe mais aonde realizar o merge .
      • Wrong-Way Merge - Executar o merge entre uma versão de um recurso de software e uma versão antiga.
      • Branch Mania - Criar muitas branches por nenhuma razão aparente.
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Branching and Merging Anti-Patterns
      • Cascading Branches - Criar branches mas nunca combiná-las de volta à linha principal de desenvolvimento.
      • Mysterious Branches - Criar uma branche por nenhuma razão aparente.
      • Temporary Branches - Criar branches para alterações e permitir que ela se torne um workspace temporário permanente.
      • Volatile Branches - Branches com recursos de software instáveis compartilhadas por outras branches ou combinadas em uma outa branch .
      • Development Freeze - Parar todas as atividades de desenvolvimento enquanto estiver criando branches , merges e gerando novas baselines.
      • Berlin Wall - Usar branches para dividir os membros das equipes de desenvolvimento ao invés de dividir o trabalho que eles estão executando.
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Controle de Versões Distribuídos
      • Distributed Version Control Systems – DVCS
      • Equipe com centenas de desenvolvedores: Mais processamento vai ser exigido do servidor central, piorando o tempo de resposta;
      • Equipe espalhada em diferentes filiais da empresa : Acesso remoto ao repositório com limitações de conexão e de permissão de escrita;
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Controle de Versões Distribuídos
      • Vantagens
        • Rapidez: Ações executadas localmente.
        • Autonomia: Possibilidade de trabalhar desconectado por um período.
        • Ramos privativos: O desenvolvedor sempre trabalha em ramos privativos, decidindo o momento de combinar com os outros.
        • Facilidade de Merge: Possuem mecanismos de rastreamento automático de merges.
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Controle de Versões Distribuídos
      • Vantagens
        • Confiabilidade: No caso de uma pane os desenvolvedores conseguem trabalhar nos seus repositórios.
        • Redução de custos com servidor: Sem a necessidade de possuir um servidor de grande poder de processamento.
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Controle de Versões Distribuídos
      • Desvantagens
        • Maior complexidade
          • Exige maior conhecimento da ferramenta e do processo
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Controle de Versões Distribuídos
      • Desvantagens
        • Tratamento de arquivos binários
          • Controle de concorrência mais complicado
        • As ferramentas de controle de mudanças ainda são centralizadas
          • Ainda não existe integração entre ferramentas
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Controle de Versões Distribuídos
      • Ferramentas
        • Mercurial
        • Git
        • Bazaar
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Controle de Versões Distribuídos
      • Projetos que usam o Git
        • Android
        • Btrfs da Oracle
        • Gnome
        • Google
        • Kernel Linux
        • Perl
        • Qt (toolkit)
        • Ruby on Rails
        • Samba
        • Servidor X.org
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • CVS
      • Concurrent Versions System – Sistema de Versões Concorrentes
      • É um Sistema de Controle de Versões OpenSource e Multiplataforma
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • CVS
      • Sua versão para Windows se chama CVSNT
      • Possui vários tipos diferentes de clientes
        • WinCVS
        • TortoiseCVS
        • Eclipse
        • ViewCVS, CVSweb...
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Arquitetura Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • CVS
      • Principais comandos:
        • Checkout
        • Commit
        • Update
        • Merge
        • Diff
        • Release
        • Import
        • Export
        • Add
        • Rem
        • Status
        • Tag
        • Branch
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Cenário Básico Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • CVS: Conceitos
      • Repositório
        • Lugar onde ficam guardados os arquivos sob controle do CVS. Um repositório é representado fisicamente por um diretório.
      • Módulo
        • Consiste em um conjunto de arquivos agrupados em pastas dentro de um repositório.
        • Normalmente um por projeto ou sistema
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • CVS: Conceitos
      • Estrutura de diretórios interna do CVS
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • CVS: Conceitos
      • Revisão
        • Arquivo revisão
        • ---------------------------------------------------------
        • build.xml 1.3
        • cadastro.jsp 1.34
        • clientes.jsp 1.27
        • index.jsp 1.21
        • index.css 1.1
        • login.jsp 1.10
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • CVS
      • Tags ( Baselining )
      • file1 file2 file3 file4 file5
      • 1.1 1.1 1.1 1.1 /--1.1* <-*- TAG “versao1-0”
      • 1.2*- 1.2 1.2 -1.2* -
      • 1.3 - 1.3*- 1.3 / 1.3
      • 1.4 1.4 / 1.4
      • -1.5*- 1.5
      • 1.6
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • CVS
      • Tags ( Baselining ) Exemplos de nomes: Apache Struts Tags: STRUTS_1_2_3, STRUTS_1_2_2, STRUTS_1_2_1, STRUTS_1_2_0, STRUTS_1_2_4 Apacha Jakarta Tomcat 5 Tags: TOMCAT_5_0_26, TOMCAT_5_0_25, TOMCAT_5_0_24 NovoSoft UML Library for Java (nsuml_1_4) Tags: release0_1_0, release0_1_1, release0_0_8, release0_0_3, release0_0_2, release0_0_4
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • TortoiseCVS
      • Cliente CVS integrado ao Windows Explorer
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • WinCVS
      • Cliente CVS desktop
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • ViewCVS
      • Cliente CVS Web
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Subversion
      • Sistema de Controle de Versões Open-source originado a partir do projeto do CVS
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Subversion x CVS Copyright © 2010 Misael Santos Gestão de Configuração de Software Característica CVSNT Subversion Autenticação via Active Directory ou SSH SIM NÃO Rename NÃO SIM Versionamento de Pastas e Metadados NÃO SIM Commits Atômicos NÃO SIM Tags e Branches Identificação Cópia Mantém o histórico de cópias e arquivos renomeados NÃO SIM Armazenamento Sistema de Arquivos Banco de Dados Tratamento de arquivos binários NÃO SIM
    • TortoiseSVN Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Plugin SVN no Eclipse Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • CA Endevor
      • Ferramenta de versionamento e distribuição para Mainframe
        • Trabalha com objetos de linguagens específicas: COBOL e NATURAL
      • Operações:
        • Adicionar
        • Mover (entre estágios)
        • Recuperar (Retrieve)
        • Consultar
        • Distribuição
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • CA Endevor
      • Publicação de Objetos
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • CA Endevor Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • CA Endevor Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Exercício 1
      • Faça um Checkout do módulo ProjetoA em sua pasta de trabalho
        • Execute a operação “CVS Obter Módulo...”
        • Parâmetros do TortoiseCVS:
          • Protocolo: pserver
          • Host: ???????????????
          • Porta: 2401
          • Repositório: /repositorio
          • Usuário: usuarioXX
          • Módulo : projetoA
      cvs checkout Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Exercício 1
      • Crie um arquivo na pasta /01-Requisitos e adicione-o ao controle de versões
        • Crie um arquivo texto com algum conteúdo na pasta
        • Execute o “CVS Adicionar” sobre o arquivo
        • Consolide a operação com o “CVS Gravar...”
        • Coloque um comentário
      cvs add  cvs commit Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Exercício 1
      • Atualize o seu Workspace
        • Execute a operação “CVS Atualizar” sobre a pasta desejada
      cvs update Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Exercício 1
      • Gere uma nova versão do seu arquivo
        • Altere o seu arquivo na PRIMEIRA LINHA do arquivo
        • Consolide as alterações no repositório através da operação “CVS Gravar...”
      • Visualize a árvore de versões do seu arquivo
        • Execute a operação “CVS > Gráfico de Revisões...” sobre o seu arquivo
      cvs commit, cvs log... Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Exercício 2
      • Altere a PRIMEIRA LINHA do arquivo do seu vizinho da esquerda e tente gravar as alterações
      • Visualize as diferenças entre a sua versão e a do servidor
        • Execute a operação “CVS Diferenças” sobre o arquivo
      cvs diff Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Exercício 2
      • Execute o comando de atualização
        • Execute a operação “CVS Atualizar” no arquivo
      • Resolva os conflitos de versões, caso existam
        • Confirme a operação “ Resolver Conflito ” clicando na indicação do arquivo
        • Realize o Merge dos dois arquivos seguindo as instruções do WinMerge .
      • Consolide as alterações (“ CVS Gravar” )
      cvs update, cvs commit Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Exercício 3
      • JIRA x CVS ( Parte 1 )
      • Acesse o JIRA: http://?????????????????8:8080 com o seu usuarioXX .
      • Crie uma Solicitação de Mudança para o seu vizinho da esquerda solicitando que ele altere algum arquivo.
      • Informe-lhe do ID de sua SM (ex: GCS-4)
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Exercício 3
      • JIRA x CVS ( Parte 2 )
      • Verifique se foi criada uma SM pra você .
      • Coloque-a “Em Progresso”
      • IMPORTANTE: Altere o seu arquivo e no Comentário do Commit informe o número da SM
      • No JIRA atualize o status da sua SM para resolvida
      • Verifique na aba “Controle de Versão” da SM a associação criada a partir do seu comentário durante o commit no CVS
      • Quando a SM que você abriu para o seu colega for resolvida, finalize-a
      Copyright © 2010 Misael Santos Gestão de Configuração de Software
    • Referências
      • PRESSMAN, R. S. Engenharia de Software , 6ª. ed., 2006.
      • HASS A. M. J. , Configuration Management Principles and Practice , Addison Wesley, 432p, 2002.
      • FREDERICKS T. Software Configuration and Integration Management , Marquette University, 2001.
      • BIRMELE C. Branching and Merging Primer , Visual Studio 2005 Technical Articles, 2006.
      Copyright © 2010 Misael Santos Gestão de Configuração de Software