versionamento de código com git; revisão de código; github

33
Práticas de Desenvolvimento de Software Aula 2. 02/03/2015. Oferecimento Aula 2 - Versionamento de código com Git; Revisão de código; Github.

Upload: infosimples

Post on 22-Aug-2015

209 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Versionamento de código com Git; Revisão de código; GitHub

Práticas de Desenvolvimento de Software

Aula 2. 02/03/2015.

Oferecimento

Aula 2 - Versionamento de código com Git; Revisão de código; Github.

Page 2: Versionamento de código com Git; Revisão de código; GitHub

Sistemas de versionamento (1)

Created by Luis Pradofrom the Noun ProjectCreated by Luis Prado

from the Noun Project

! " !!

Page 3: Versionamento de código com Git; Revisão de código; GitHub

Sistemas de versionamento (1)

Created by Luis Pradofrom the Noun ProjectCreated by Luis Prado

from the Noun Project

! " !!

Page 4: Versionamento de código com Git; Revisão de código; GitHub

Sistemas de versionamento (1)

Created by Luis Pradofrom the Noun ProjectCreated by Luis Prado

from the Noun Project

! " !!

Page 5: Versionamento de código com Git; Revisão de código; GitHub

Sistemas de versionamento (1)

Created by Luis Pradofrom the Noun ProjectCreated by Luis Prado

from the Noun Project

! !

Page 6: Versionamento de código com Git; Revisão de código; GitHub

Sistemas de versionamento (1)

Created by Luis Pradofrom the Noun ProjectCreated by Luis Prado

from the Noun Project

! " !!

!

?##&*%!

Page 7: Versionamento de código com Git; Revisão de código; GitHub

Sistemas de versionamento (1)

Created by Luis Pradofrom the Noun ProjectCreated by Luis Prado

from the Noun Project

! !! !Desorganização

Possibilidade de erro

Espaço de armazenamento

Page 8: Versionamento de código com Git; Revisão de código; GitHub

Sistemas de versionamento (2)

Gerenciamento das modificações feitas, ao longo do tempo, em um conjunto de arquivos.

Sistema de controle de versão

Page 9: Versionamento de código com Git; Revisão de código; GitHub

Sistemas de versionamento (3)

Sistema de controle de versão• Repositório de código • Versões diferentes de um mesmo produto • Backups de código • Compartilhamento de código • Alterações simultâneas nos mesmos arquivos • Conhecer o autor de uma alteração • Saber o motivo de uma alteração • Comparação de versões • Segurança para experimentar

Page 10: Versionamento de código com Git; Revisão de código; GitHub

Sistemas de versionamento (4)

Vocabulário comum

Repositório

Checkout

Branch

Commit

Local onde ficam armazenados todos os arquivos já enviados, alguma vez, para o SCV.

Criar uma cópia local dos arquivos a partir do repositório.

Um conjunto de arquivos que foi “bifurcado”, de modo que ambas as cópias possam ser modificadas de forma independente.

Salvar em algum repositório as mudanças realizadas em arquivos locais.

Page 11: Versionamento de código com Git; Revisão de código; GitHub

Sistemas de versionamento (5)

Vocabulário comum

Merge

Conflito

Diff

Operação de integração que junta diferentes alterações realizadas em um mesmo arquivo.

Ocorre quando duas pessoas modificam um mesmo arquivo e o SCV não consegue conciliar as alterações. Um desenvolvedor deve resolver o conflito.

Diferença entre versões sucessivas de um mesmo arquivo.

Page 12: Versionamento de código com Git; Revisão de código; GitHub

Sistemas de versionamento (6)

WORKING COPY OF v1

DESENVOLVEDOR

CHECKOUT COMMIT

WORKING COPY OF v1

DESENVOLVEDOR

WORKING COPY OF v3

DESENVOLVEDOR

SERVIDOR (REPOSITÓRIO)

v1 v2 v3

Modelo cliente-servidor

Page 13: Versionamento de código com Git; Revisão de código; GitHub

Sistemas de versionamento (7)

Ingredientes (6 porções) -------------------------4 ovos-1 1/2 xícara de açúcar+5 ovos+1 xícara de açúcar 1 xícara de farinha de trigo 3/4 xícara de margarina-3 xícaras de chocolate em pó+4 xícaras de chocolate em pó 2 colheres (chá) de baunilha

Modo de preparo --------------- Preparo: 15mins-Cozimento: 20mins+Cozimento: 35mins

diff

Ingredientes (6 porções)------------------------4 ovos1 1/2 xícara de açúcar1 xícara de farinha de trigo3/4 xícara de margarina3 xícaras de chocolate em pó2 colheres (chá) de baunilha

Modo de preparo---------------Preparo: 15minsCozimento: 20mins

brownie.txt

Ingredientes (6 porções)------------------------5 ovos1 xícara de açúcar1 xícara de farinha de trigo3/4 xícara de margarina4 xícaras de chocolate em pó2 colheres (chá) de baunilha

Modo de preparo---------------Preparo: 15minsCozimento: 35mins

brownie.txt

Ingredientes (6 porções)------------------------5 ovos1 xícara de açúcar1 xícara de farinha de trigo3/4 xícara de margarina4 xícaras de chocolate em pó2 colheres (chá) de baunilha

Modo de preparo---------------Preparo: 15minsCozimento: 35mins

Armazenamento de Deltas

Page 14: Versionamento de código com Git; Revisão de código; GitHub

Sistemas de versionamento (8)

v1 v2 v3

WORKING COPY

DESENVOLVEDOR

v1 v2 v3

WORKING COPY

DESENVOLVEDOR

v1 v2 v3

WORKING COPY

DESENVOLVEDOR

v1 v2 v3

REPOSITÓRIO CENTRAL

REPOSITÓRIO LOCAL

CLONE PUSH PULL

COMMIT CHECKOUT

Modelo distribuído

Page 15: Versionamento de código com Git; Revisão de código; GitHub

Git (1)

Page 16: Versionamento de código com Git; Revisão de código; GitHub

Git (2)

Sistema de controle de versão distribuído gratuito e open source, criado em 2005 por Linus Torvalds

para o Linux.

Page 17: Versionamento de código com Git; Revisão de código; GitHub

Git (3)

Distribuído RápidoTrês

estadosIntegridade

de dados

Múltiplos repositórios independentes, que são backups completos do repositório principal

Page 18: Versionamento de código com Git; Revisão de código; GitHub

Git (4)

Distribuído RápidoTrês

estadosIntegridade

de dados

A maior parte das operações são locais e o software é escrito majoritariamente em C e shell script.

Page 19: Versionamento de código com Git; Revisão de código; GitHub

Git (5)

Distribuído RápidoTrês

estadosIntegridade

de dados

Uma das características mais importantes do Git: cada arquivo pode estar em um dos três estados: modified, staged, commited.

Page 20: Versionamento de código com Git; Revisão de código; GitHub

Git (6)

Distribuído RápidoTrês

estadosIntegridade

de dados

Impossibilidade de modificar arquivos, datas e mensagens, intencional ou acidentalmente, sem afetar o histórico do repositório.

Page 21: Versionamento de código com Git; Revisão de código; GitHub

Git (7)

Del

tas

Snap

shot

s

Page 22: Versionamento de código com Git; Revisão de código; GitHub

Git (8)

Empresas e projetos usando Git

Page 23: Versionamento de código com Git; Revisão de código; GitHub

Git (9)

Comandos básicosgit init Inicializa um novo repositório Git no diretório atual.

git status Mostra o estado (modified, staged ou untracked) de cada arquivo alterado desde o último commit.

git add Adiciona arquivos à área de staging.

git rm Inclui na área de staging a remoção do controle de versão de algum arquivo, além de também removê-lo do disco.

git commit Salva no repositório local as alterações que estão na área de staging.

git log Mostra o histórico de commits.

Page 24: Versionamento de código com Git; Revisão de código; GitHub

Git (10)

Comandos básicosgit push Envia para um repositório remoto novos commits que estejam no

repositório local.

git pull Baixa para o repositório local novos commits que estejam em um repositório remoto.

git diff Exibe as diferenças entre dois estados do código.

git reset Retorna os arquivos para algum estado conhecido anterior.

git branch Cria uma nova branch a partir da branch atual.

git clone Cria um repositório local que é uma cópia de um repositório remoto.

git merge Integra as alterações de uma branch em outra.

Page 25: Versionamento de código com Git; Revisão de código; GitHub

Git (11)

Comandos básicos

#Os comandos normalmente têm opções

que alteram o seu comportamento.

Consulte a documentação do Git sempre que necessário.

Page 26: Versionamento de código com Git; Revisão de código; GitHub

Git (12)

STASH WORKSPACE INDEX LOCAL REPO

UPSTREAM REPO

cloneadd

commitpush

rmcommit

pullreset

stashpull

stash popadd

commit

WORKFLOW

Page 27: Versionamento de código com Git; Revisão de código; GitHub

Git (13)

HISTORY

Add brownie recipe.

Improves brownie recipe after 1st baking.

Add cheesecake recipe from grandma.

Add apple pie recipe from aunt Frida.

Remove apple pie. Too sweet.

Change brownie recipe format.

Change cheesecake recipe format.

Add chocolate mousse recipe.

Merge master.

Change chocolate mousse recipe format.

Merge update-recipe-format.

master update-recipe-format Commit Author Date

ca85394 Camila 15/03/2014

fb657ac Lucas 14/03/2014

8dcbb3a Lucas 14/03/2014

052be54 Camila 02/03/2014

71bced5 Lucas 20/02/2014

3d556a3 Lucas 20/02/2014

57e7741 Camila 18/02/2014

ae65534 Camila 10/02/2014

4c1748f Camila 23/01/2014

68d98c5 Camila 05/01/2014

50989d0 Camila 01/01/2014

Page 28: Versionamento de código com Git; Revisão de código; GitHub

Revisão de código (1)

Processo de análise de código-fonte que melhora a qualidade geral do projeto e da equipe de

desenvolvimento.

Revisão de código

Page 29: Versionamento de código com Git; Revisão de código; GitHub

Revisão de código (2)

• Detecção prematura de erros: erros de compilação podem ser detectados automaticamente e erros lógicos através da análise de outro desenvolvedor.

• Conformidade com padrões de código: violações de padrões são corrigidas rapidamente e toda a equipe tem maior ciência dos padrões.

Revisão de código

Page 30: Versionamento de código com Git; Revisão de código; GitHub

Revisão de código (3)

Revisão de código• Troca de conhecimentos: permite o aprendizado

através da avaliação do código de outras pessoas e do feedback recebido no próprio código.

• Mais de uma pessoa conhece o código: sempre no mínimo duas pessoas conhecerão todas as partes do software.

Page 31: Versionamento de código com Git; Revisão de código; GitHub

Revisão de código (4) DEMO

Gerrit+

Page 32: Versionamento de código com Git; Revisão de código; GitHub

Github (1)

Hospedagem de repositórios Git

• Repositórios públicos e privados • Rede social • Ênfase em colaboração • 5,9M de novos repositórios (2013)*

Octocat

* Mais informações em http://octoverse.github.com/

Page 33: Versionamento de código com Git; Revisão de código; GitHub

Github (2)

WORKFLOW

DEVELOPER PRIVATE

DEVELOPER PRIVATE

DEVELOPER PUBLIC

DEVELOPER PUBLIC

BLESSED REPOSITORY

INTEGRATION MANAGER

REPOSITÓRIOS REMOTOS

REPOSITÓRIOS LOCAIS

FORK

PUSH

PUSH