introdução ao controle de versões › ~leomurta › courses › 2012.2 › labgc ›...

31
Introdução ao Controle de Versões Leonardo Murta ([email protected])

Upload: others

Post on 28-Jun-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 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

Introdução ao Controle de Versões

Leonardo Murta ([email protected])

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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)

Page 31: 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

Introdução ao Controle de Versões

Leonardo Murta ([email protected])