Branch & Merge
Claudio Leite
Sobre
http://blog.lambda3.com.br/
@claudiobernardo
Agenda
Conceitos
Básicos
Demonstração
Cenário
“Uma empresa de médio porte está em franco crescimento, aproveitando oportunidades do
mercado. Suas aplicações estão se tornando mais complexas e o time de desenvolvedores
está crescendo. Nos últimos anos, a empresa tem sofrido com uma demanda crescente por
suporte, devido constantes falhas no software em produção. A qualidade do software
gerado pelos times é sofrível e essa percepção tem crescido no mercado. A empresa espera
continuar crescendo, mas precisa corrigir e evitar novos problemas com a gestão de seu
processo de desenvolvimento de software. Recentemente, a empresa ouviu falar sobre as
novas tendências no desenvolvimento ágil e os benefícios da abordagem para Modern
Apps.”
CONCEITOS BÁSICOS
Controlador de Versão
• É um repositório que contém os arquivos necessários para o
desenvolvimento do seu projeto
• Mantém Controle sobre quais mudanças ocorreram:
•
•
•
•
Quem ?
O que ?
Quando ?
Porque ?
• É um dos princípios básicos do ciclo de desenvolvimento de software
e que ajuda para que os desenvolvedores trabalhem
colaborativamente
• Usa conceitos básicos como check-out, check-in, get latest, labeling
...
Branch
•
Branch permite que seja realizado desenvolvimento em paralelo
•
•
Branch == Isolar / Isolamento
Estratégias Comuns:
– Implementando features diferentes em branches diferentes com a mesma base de
código
– Mantém diferentes releases em branches diferentes
–
–
–
–
•
•
Branch por Release
Branch por Feature
Branch por Time
Branch por Qualidade
Regra Básica: NÃO CRIE BRANCH! Apenas quando necessário (KISS)
Branch não é Label!
Merge
• Merge é uma operação de reconciliação de código.
• Possibilidade de Merge automático
• Merge permite que você passe as mudanças de um
branch para o outro
– Forward Integration
– Reverse Integragion
R1.1
R1
FI for Release
FI for Release
Main
R2
R2.1
O QUE BRANCH TENTA RESOLVER ?
O que Branch Tenta Resolver ?
•
•
•
•
Release Code When it is Ready
Independent Construction of Features
Suspension of Coding
Know what code is Released
•
•
•
•
Quando o código de Release está Pronto
Construção Independente de Features
Suspensão de Código – Code Freezen
Saber Qual Código foi liberado para Release
BRANCH POR RELEASE
Branch por Release (Staircase)
C1
Produção
Test
B
C2
B
Test
Produção
Test
Bugs
C1
B
C3
C2
RI
Test
C4
B
Produção
RI
Test
RI
C5 RI
C6
Produção
Test
RI
Pros & Cons
Pros :
• Modelo mais simples de ser
usado
• Modelo mais simples para
manter uma única versão
• Mesmo processo para hotfix
ou acertos da release
• Menor gerência de Branches
Cons :
• Não é muito flexível quanto os
outros padrões
• Quanto mais release ativos,
mais complicado realizar FI
• Necessidade de multiplos
ambientes de testes
• Não suporta desenvolvimento
em paralelo
• Necessidade de recriação de
builds para cada release
BRANCH POR QUALIDADE
Branch por Qualidade (Basic Plan)
B
B
RI
Branch por Qualidade (Safe Keeping)
B
B
RI
B
B
Bugs no Branch de QA
Rx
RI
L1
B
RI
L1
BUG
B
L2
FI
RI
FI
B
FI
RI
RI
Bugs no Branch de Produção
RI
RI
Bug
L-QA2
L-QA3
L-QA1
B
RI
FI
RI
L-QA2
B
FI
RI
L-QA4
FI
B
Release 1
FI
Release 2
FI
Release 3
RI
L-QA5
Pros & Cons
Pros :
• Permite maior
Flexibilidade
• Facilidade para
trabalhar com
multiplos Branches
Cons :
• Dependendo da
estrutura elaborada
pode ser muito
complexa
• Requer uma pessoa
dedica para gerenciar
sua estrutura e
compilação
• Sem documentação,
você pode ser perder e
não saber mais onde
está o seu código.
BRANCH POR FEATURE
Branch por Feature
RI
RI
RI
B
FI
FI
FI
FI
FI
FI
B
Bug
RI
RI
RI
B
FI
FI
FI
Bug
FI
FI
FI
B
Pros & Cons
Pros :
• Separa o desenvolvimento
das features
• Permite uma flexibilidade
para escolher o que vai no
seu release
• Facilita o debug (problema
em uma feature não afeta
outra)
• Ajuda no trabalho com
features que dependem de
um tempo maior de
desenvolvimento
Cons :
•
•
•
•
•
Pode ficar muito complicado
Os times responsáveis pelas
features devem sempre
lembrar de sincronizar com o
Branch de DEV
Pode complicar um pouco a
vida de desenvolvedores que
estão trabalhando em mais de
uma feature
Exige pelo menos um
ambiente de testes por cada
feature
As vezes pode ser necessário
mais de um Branch de
Integração
Demonstração
BRANCH POR FEATURE VS2012
Obrigado !
Download

Apresentação do PowerPoint