introdução ao controle de versões › ~leomurta › courses › 2012.2 › labgc ›...
TRANSCRIPT
![Page 2: Introdução ao Controle de Versões › ~leomurta › courses › 2012.2 › labgc › aula2.pdf · Leonardo Murta Introdução ao Controle de Versões 7 Histórico •Anos 50 –GC](https://reader033.vdocuments.mx/reader033/viewer/2022053013/5f10796f7e708231d4494973/html5/thumbnails/2.jpg)
Introdução
• A Engenharia de Software...
– Abordagem disciplinada para o desenvolvimento de software
– Grande diversidade de metodologias
Leonardo Murta Introdução ao Controle de Versões 2
![Page 3: Introdução ao Controle de Versões › ~leomurta › courses › 2012.2 › labgc › aula2.pdf · Leonardo Murta Introdução ao Controle de Versões 7 Histórico •Anos 50 –GC](https://reader033.vdocuments.mx/reader033/viewer/2022053013/5f10796f7e708231d4494973/html5/thumbnails/3.jpg)
Introdução
• Ponto em comum nas metodologias:
– refinamentos sucessivos de artefatos
Leonardo Murta Introdução ao Controle de Versões 3
http://www.colegiosaofrancisco.com.br
![Page 4: Introdução ao Controle de Versões › ~leomurta › courses › 2012.2 › labgc › aula2.pdf · Leonardo Murta Introdução ao Controle de Versões 7 Histórico •Anos 50 –GC](https://reader033.vdocuments.mx/reader033/viewer/2022053013/5f10796f7e708231d4494973/html5/thumbnails/4.jpg)
Mas onde ficam esses artefatos?
Leonardo Murta Introdução ao Controle de Versões 4
Tarefas de Engenharia de
Software
Artefato novo
Repositório
Artefato modificado
Artefato
![Page 5: Introdução ao Controle de Versões › ~leomurta › courses › 2012.2 › labgc › aula2.pdf · Leonardo Murta Introdução ao Controle de Versões 7 Histórico •Anos 50 –GC](https://reader033.vdocuments.mx/reader033/viewer/2022053013/5f10796f7e708231d4494973/html5/thumbnails/5.jpg)
O que são repositórios?
• Repositórios – Lugar seguro onde artefatos
são depositados
– Permitem armazenamento, busca e recuperação de artefatos
– Servem como um ponto de referência
– Apóiam no aumento da memória organizacional
Leonardo Murta Introdução ao Controle de Versões 5
![Page 6: Introdução ao Controle de Versões › ~leomurta › courses › 2012.2 › labgc › aula2.pdf · Leonardo Murta Introdução ao Controle de Versões 7 Histórico •Anos 50 –GC](https://reader033.vdocuments.mx/reader033/viewer/2022053013/5f10796f7e708231d4494973/html5/thumbnails/6.jpg)
Gerência de Configuração
Desenvolvimento Liberação Implantação Produção
Leonardo Murta Introdução ao Controle de Versões 6
Gerência de Configuração
Gerência de configuração de software é uma disciplina para o controle da evolução de sistemas de software (Susan Dart, 1991)
![Page 7: Introdução ao Controle de Versões › ~leomurta › courses › 2012.2 › labgc › aula2.pdf · Leonardo Murta Introdução ao Controle de Versões 7 Histórico •Anos 50 –GC](https://reader033.vdocuments.mx/reader033/viewer/2022053013/5f10796f7e708231d4494973/html5/thumbnails/7.jpg)
Leonardo Murta Introdução ao Controle de Versões 7
Histórico
• Anos 50
– GC para produção de aviões de guerra e naves espaciais
• Anos 60 e 70
– Surgimento de GCS (S = Software)
– Foco ainda em aplicações militares e aeroespaciais
• Anos 80 e 90
– Mudança de foco (MIL EIA, IEEE, ISO, etc.)
– Surgimento das primeiras normas internacionais
– Assimilação por organizações não militares
![Page 8: Introdução ao Controle de Versões › ~leomurta › courses › 2012.2 › labgc › aula2.pdf · Leonardo Murta Introdução ao Controle de Versões 7 Histórico •Anos 50 –GC](https://reader033.vdocuments.mx/reader033/viewer/2022053013/5f10796f7e708231d4494973/html5/thumbnails/8.jpg)
Item de configuração
• Agregação de hardware e/ou software que será passível de gerência de configuração e tratado como um elemento único
• Tipos de ICs
– Produtos de trabalho do projeto
– Produtos de trabalho de processos
• Exemplos: plano de GC, requisitos, modelos, código-fonte, etc.
Leonardo Murta Introdução ao Controle de Versões 8
![Page 9: Introdução ao Controle de Versões › ~leomurta › courses › 2012.2 › labgc › aula2.pdf · Leonardo Murta Introdução ao Controle de Versões 7 Histórico •Anos 50 –GC](https://reader033.vdocuments.mx/reader033/viewer/2022053013/5f10796f7e708231d4494973/html5/thumbnails/9.jpg)
Versão
• Instâncias de um mesmo item de configuração que diferem entre si em algo (tipos: revisões e variantes)
Leonardo Murta Introdução ao Controle de Versões 9
IC
1.0
IC
1.1
IC
1.2
IC
1.1.1
IC
1.1.2
IC
1.3
IC
2.0
IC
1.4
IC
2.1
![Page 10: Introdução ao Controle de Versões › ~leomurta › courses › 2012.2 › labgc › aula2.pdf · Leonardo Murta Introdução ao Controle de Versões 7 Histórico •Anos 50 –GC](https://reader033.vdocuments.mx/reader033/viewer/2022053013/5f10796f7e708231d4494973/html5/thumbnails/10.jpg)
Configuração
• Um conjunto de versões de Itens de Configuração (IC), onde existe somente uma versão selecionada para cada IC do conjunto
• Uma configuração pode ser vista como a versão de um IC composto de outros ICs
• Exemplos – Configuração do sistema – Configuração do processo – Configuração do módulo X – Configuração dos requisitos do sistema – Configuração do código fonte
Leonardo Murta Introdução ao Controle de Versões 10
![Page 11: Introdução ao Controle de Versões › ~leomurta › courses › 2012.2 › labgc › aula2.pdf · Leonardo Murta Introdução ao Controle de Versões 7 Histórico •Anos 50 –GC](https://reader033.vdocuments.mx/reader033/viewer/2022053013/5f10796f7e708231d4494973/html5/thumbnails/11.jpg)
Leonardo Murta Introdução ao Controle de Versões 11
Etiqueta (tag) • Mecanismo usado para identificar uma configuração
– As diversas versões de ICs marcadas com um rótulo constituem uma configuração
do sistema
• Permite identificar níveis de qualidade dos ICs
• Sinônimo: rótulo (label)
1.1
1.2
1.3
AloMundo.java
1.1
1.2
1.3
BemVindo.java
1.1
1.2
build.xml
1.1
1.2
Usuario.java
1.0.0
1.0.1
Etiqueta
![Page 12: Introdução ao Controle de Versões › ~leomurta › courses › 2012.2 › labgc › aula2.pdf · Leonardo Murta Introdução ao Controle de Versões 7 Histórico •Anos 50 –GC](https://reader033.vdocuments.mx/reader033/viewer/2022053013/5f10796f7e708231d4494973/html5/thumbnails/12.jpg)
Leonardo Murta Introdução ao Controle de Versões 12
Configuração x versão
Configuração
Versão
IC composto IC primitivo
IC
• Genericamente
– O sistema S é composto pelos arquivos X, Y e Z
• Concretamente
– A configuração 5 do sistema S é composta pela versão 2 do arquivo X, versão 4 do arquivo Y e versão 6 do arquivo Z
![Page 13: Introdução ao Controle de Versões › ~leomurta › courses › 2012.2 › labgc › aula2.pdf · Leonardo Murta Introdução ao Controle de Versões 7 Histórico •Anos 50 –GC](https://reader033.vdocuments.mx/reader033/viewer/2022053013/5f10796f7e708231d4494973/html5/thumbnails/13.jpg)
Configuração x versão
Leonardo Murta Introdução ao Controle de Versões 13
IC composto
Conf. 1
Conf. 2
Conf. 3
IC primitivo 1 IC primitivo 2 IC primitivo 3
V.1
V.2
V.3
V.4
V.1
V.2
V.1
V.2
V.3
![Page 14: Introdução ao Controle de Versões › ~leomurta › courses › 2012.2 › labgc › aula2.pdf · Leonardo Murta Introdução ao Controle de Versões 7 Histórico •Anos 50 –GC](https://reader033.vdocuments.mx/reader033/viewer/2022053013/5f10796f7e708231d4494973/html5/thumbnails/14.jpg)
Sistema de Gerência de Configuração
Leonardo Murta Introdução ao Controle de Versões 14
Versão 1
Versão 2
Versão 3
Versão 4
Versão 5
![Page 15: Introdução ao Controle de Versões › ~leomurta › courses › 2012.2 › labgc › aula2.pdf · Leonardo Murta Introdução ao Controle de Versões 7 Histórico •Anos 50 –GC](https://reader033.vdocuments.mx/reader033/viewer/2022053013/5f10796f7e708231d4494973/html5/thumbnails/15.jpg)
Sistema de Gerência de Configuração
Leonardo Murta Introdução ao Controle de Versões 15
Versão 1
Versão 2
Versão 3
Versão 4
Versão 5
![Page 16: Introdução ao Controle de Versões › ~leomurta › courses › 2012.2 › labgc › aula2.pdf · Leonardo Murta Introdução ao Controle de Versões 7 Histórico •Anos 50 –GC](https://reader033.vdocuments.mx/reader033/viewer/2022053013/5f10796f7e708231d4494973/html5/thumbnails/16.jpg)
Sistema de Gerência de Configuração
Leonardo Murta Introdução ao Controle de Versões 16
Versão 1
Versão 2
Versão 3
Versão 4
Versão 5
![Page 17: Introdução ao Controle de Versões › ~leomurta › courses › 2012.2 › labgc › aula2.pdf · Leonardo Murta Introdução ao Controle de Versões 7 Histórico •Anos 50 –GC](https://reader033.vdocuments.mx/reader033/viewer/2022053013/5f10796f7e708231d4494973/html5/thumbnails/17.jpg)
Sistema de Gerência de Configuração
Leonardo Murta Introdução ao Controle de Versões 17
Artefatos
Controle de Versões
Construção e Release
Controle de Modificações
Solicitações
![Page 18: Introdução ao Controle de Versões › ~leomurta › courses › 2012.2 › labgc › aula2.pdf · Leonardo Murta Introdução ao Controle de Versões 7 Histórico •Anos 50 –GC](https://reader033.vdocuments.mx/reader033/viewer/2022053013/5f10796f7e708231d4494973/html5/thumbnails/18.jpg)
Sistema de Gerência de Configuração
Leonardo Murta Introdução ao Controle de Versões 18
Artefatos
Controle de Versões
Construção e Release
Controle de Modificações
Solicitações
![Page 19: Introdução ao Controle de Versões › ~leomurta › courses › 2012.2 › labgc › aula2.pdf · Leonardo Murta Introdução ao Controle de Versões 7 Histórico •Anos 50 –GC](https://reader033.vdocuments.mx/reader033/viewer/2022053013/5f10796f7e708231d4494973/html5/thumbnails/19.jpg)
Controle de versões
Leonardo Murta Introdução ao Controle de Versões 19
Armazenamento?
Colaboração?
Consulta?
Topologia?
Repositório
Item de Configuração
![Page 20: Introdução ao Controle de Versões › ~leomurta › courses › 2012.2 › labgc › aula2.pdf · Leonardo Murta Introdução ao Controle de Versões 7 Histórico •Anos 50 –GC](https://reader033.vdocuments.mx/reader033/viewer/2022053013/5f10796f7e708231d4494973/html5/thumbnails/20.jpg)
Topologia
Leonardo Murta Introdução ao Controle de Versões 20
Repositório
Espaço de Trabalho
Centralizado Distribuído
check-in /
com
mit
check-o
ut / u
pdate
Repositório
Espaço de Trabalho c
heck-in
check-o
ut / u
pdate
Repositório
Espaço de Trabalho
clo
ne / p
ull
push
![Page 21: Introdução ao Controle de Versões › ~leomurta › courses › 2012.2 › labgc › aula2.pdf · Leonardo Murta Introdução ao Controle de Versões 7 Histórico •Anos 50 –GC](https://reader033.vdocuments.mx/reader033/viewer/2022053013/5f10796f7e708231d4494973/html5/thumbnails/21.jpg)
Armazenamento
Leonardo Murta Introdução ao Controle de Versões 21
v.3
v.2
v.1
Completo
delta 12
v.1
Forward
delta 23
delta 32
v.3
Reverse
delta 21
In-line
v.1 v.2/3
v.1/2 v.3
![Page 22: Introdução ao Controle de Versões › ~leomurta › courses › 2012.2 › labgc › aula2.pdf · Leonardo Murta Introdução ao Controle de Versões 7 Histórico •Anos 50 –GC](https://reader033.vdocuments.mx/reader033/viewer/2022053013/5f10796f7e708231d4494973/html5/thumbnails/22.jpg)
Colaboração
Leonardo Murta Introdução ao Controle de Versões 22
m.3
m.2
m.1
Pessimista
junção
m.1
Otimista Misto
m.2 m.3
junção
m.1
m.2 m.3
![Page 23: Introdução ao Controle de Versões › ~leomurta › courses › 2012.2 › labgc › aula2.pdf · Leonardo Murta Introdução ao Controle de Versões 7 Histórico •Anos 50 –GC](https://reader033.vdocuments.mx/reader033/viewer/2022053013/5f10796f7e708231d4494973/html5/thumbnails/23.jpg)
Consulta
Leonardo Murta Introdução ao Controle de Versões 23
Artefato 5
Versão 1
Versão 2
Versão 4
Modificação 4
Artefato 2
Artefato 5
Artefato 7
Artefato
Versão
1
*
Modificação
*
1
•Informações
–Identificação (número da modificação)
–Quem (autor)
–Quando (data)
–Onde (caminhos)
–Como (ação nos caminhos)
–O que (mensagem)
–Por que (número da solicitação de modificação)
![Page 24: Introdução ao Controle de Versões › ~leomurta › courses › 2012.2 › labgc › aula2.pdf · Leonardo Murta Introdução ao Controle de Versões 7 Histórico •Anos 50 –GC](https://reader033.vdocuments.mx/reader033/viewer/2022053013/5f10796f7e708231d4494973/html5/thumbnails/24.jpg)
Ramos (branches)
• Versões que não seguem a linha principal de desenvolvimento
• Fornecem isolamento para o processo de desenvolvimento – Ramos usualmente são migrados à linha principal de
desenvolvimento – A migração pode ser complicada no caso de isolamento longo
• Características dos ramos se comparados a espaços de trabalho – compartilhados por outras pessoas (espaços de trabalho são
isolados) – residem no servidor (espaços de trabalho residem no cliente) – históricos (espaços de trabalho são momentâneos) – permanentes (espaços de trabalho temporários)
Leonardo Murta Introdução ao Controle de Versões 24
![Page 25: Introdução ao Controle de Versões › ~leomurta › courses › 2012.2 › labgc › aula2.pdf · Leonardo Murta Introdução ao Controle de Versões 7 Histórico •Anos 50 –GC](https://reader033.vdocuments.mx/reader033/viewer/2022053013/5f10796f7e708231d4494973/html5/thumbnails/25.jpg)
Leonardo Murta Introdução ao Controle de Versões 25
Ramos (exemplo 1) • Manutenção em série
– Ramo principal: evolução
– Ramos auxiliares: correções
Sistema
Rel. 1
1.0 1.1 1.2
Rel. 2
2.0 2.1
Verif. Verif.
RC1 RC2 Evolução Evolução Desenv.
Correção Correção Correção
![Page 26: Introdução ao Controle de Versões › ~leomurta › courses › 2012.2 › labgc › aula2.pdf · Leonardo Murta Introdução ao Controle de Versões 7 Histórico •Anos 50 –GC](https://reader033.vdocuments.mx/reader033/viewer/2022053013/5f10796f7e708231d4494973/html5/thumbnails/26.jpg)
Leonardo Murta Introdução ao Controle de Versões 26
Ramos (exemplo 2) • Organização por requisições
– Ramo principal: integração
– Ramos auxiliares: requisições
• Permite que cada requisição seja identificada (change sets)
• Torna possível a remoção de uma requisição do produto
Integração
Requisição 1
RM1
Requisição 3
RM3
Requisição 2
RM2
![Page 27: Introdução ao Controle de Versões › ~leomurta › courses › 2012.2 › labgc › aula2.pdf · Leonardo Murta Introdução ao Controle de Versões 7 Histórico •Anos 50 –GC](https://reader033.vdocuments.mx/reader033/viewer/2022053013/5f10796f7e708231d4494973/html5/thumbnails/27.jpg)
Junção
• Processo de migração de
– Espaços de trabalho
– Ramos
Leonardo Murta Introdução ao Controle de Versões 27
X Y Z
A Y
<X> ou <A>? Y <Z> ou nada?
X Y Z
A Y
X Y
A Y Z
2-way merge 3-way merge
![Page 28: Introdução ao Controle de Versões › ~leomurta › courses › 2012.2 › labgc › aula2.pdf · Leonardo Murta Introdução ao Controle de Versões 7 Histórico •Anos 50 –GC](https://reader033.vdocuments.mx/reader033/viewer/2022053013/5f10796f7e708231d4494973/html5/thumbnails/28.jpg)
Leonardo Murta Introdução ao Controle de Versões 28
Conflitos
• Situação onde não é possível executar a junção de forma automática
• Tipos – Físico (linha do arquivo)
– Lógico (sintaxe do arquivo)
– Semântico (conteúdo do arquivo)
• O suporte atual concentra no nível físico!
• Exemplos de conflitos físicos – Alterações em paralelo de uma mesma linha
– Remoção e alteração em paralelo de uma mesma linha
– Adições de linhas em paralelo na mesma região do arquivo
![Page 29: Introdução ao Controle de Versões › ~leomurta › courses › 2012.2 › labgc › aula2.pdf · Leonardo Murta Introdução ao Controle de Versões 7 Histórico •Anos 50 –GC](https://reader033.vdocuments.mx/reader033/viewer/2022053013/5f10796f7e708231d4494973/html5/thumbnails/29.jpg)
Introdução ao Controle de Versões 29
Exemplo (junção no Eclipse)
Leonardo Murta
![Page 30: Introdução ao Controle de Versões › ~leomurta › courses › 2012.2 › labgc › aula2.pdf · Leonardo Murta Introdução ao Controle de Versões 7 Histórico •Anos 50 –GC](https://reader033.vdocuments.mx/reader033/viewer/2022053013/5f10796f7e708231d4494973/html5/thumbnails/30.jpg)
Leonardo Murta Introdução ao Controle de Versões 30
Exemplo de ferramentas de controle de versões
• Livre – Git – Mercurial – Subversion
• Comercial – BitKeeper (BitMover) – ClearCase (IBM Rational) – Perforce – PVCS (Serena) – StarTeam (Borland) – Synergy/CM (Telelogic) – Team Foundation Server (Microsoft)