versionamento de código com git; revisão de código; github
TRANSCRIPT
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.
Sistemas de versionamento (1)
Created by Luis Pradofrom the Noun ProjectCreated by Luis Prado
from the Noun Project
! " !!
Sistemas de versionamento (1)
Created by Luis Pradofrom the Noun ProjectCreated by Luis Prado
from the Noun Project
! " !!
Sistemas de versionamento (1)
Created by Luis Pradofrom the Noun ProjectCreated by Luis Prado
from the Noun Project
! " !!
Sistemas de versionamento (1)
Created by Luis Pradofrom the Noun ProjectCreated by Luis Prado
from the Noun Project
! !
Sistemas de versionamento (1)
Created by Luis Pradofrom the Noun ProjectCreated by Luis Prado
from the Noun Project
! " !!
!
?##&*%!
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
Sistemas de versionamento (2)
Gerenciamento das modificações feitas, ao longo do tempo, em um conjunto de arquivos.
Sistema de controle de versão
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
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.
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.
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
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
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
Git (1)
Git (2)
Sistema de controle de versão distribuído gratuito e open source, criado em 2005 por Linus Torvalds
para o Linux.
Git (3)
Distribuído RápidoTrês
estadosIntegridade
de dados
Múltiplos repositórios independentes, que são backups completos do repositório principal
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.
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.
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.
Git (7)
Del
tas
Snap
shot
s
Git (8)
Empresas e projetos usando Git
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.
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.
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.
Git (12)
STASH WORKSPACE INDEX LOCAL REPO
UPSTREAM REPO
cloneadd
commitpush
rmcommit
pullreset
stashpull
stash popadd
commit
WORKFLOW
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
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
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
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.
Revisão de código (4) DEMO
Gerrit+
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/
Github (2)
WORKFLOW
DEVELOPER PRIVATE
DEVELOPER PRIVATE
DEVELOPER PUBLIC
DEVELOPER PUBLIC
BLESSED REPOSITORY
INTEGRATION MANAGER
REPOSITÓRIOS REMOTOS
REPOSITÓRIOS LOCAIS
FORK
PUSH
PUSH