![Page 1: Branch & Merge Claudio Leite. Sobre @claudiobernardo](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc13d497959413d8dd0c5/html5/thumbnails/1.jpg)
Branch & MergeClaudio Leite
![Page 2: Branch & Merge Claudio Leite. Sobre @claudiobernardo](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc13d497959413d8dd0c5/html5/thumbnails/2.jpg)
Sobre
http://blog.lambda3.com.br/
@claudiobernardo
![Page 3: Branch & Merge Claudio Leite. Sobre @claudiobernardo](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc13d497959413d8dd0c5/html5/thumbnails/3.jpg)
Agenda
Conceitos
Básicos
Demonstração
O que estratégias de Branch
tentam resolver ?
Estratégias de Branch:
Por Release
Estratégias de Branch:
Por QualidadeEstratégia
s de Branch:
Por Feature
![Page 4: Branch & Merge Claudio Leite. Sobre @claudiobernardo](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc13d497959413d8dd0c5/html5/thumbnails/4.jpg)
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.”
![Page 5: Branch & Merge Claudio Leite. Sobre @claudiobernardo](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc13d497959413d8dd0c5/html5/thumbnails/5.jpg)
CONCEITOS BÁSICOS
![Page 6: Branch & Merge Claudio Leite. Sobre @claudiobernardo](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc13d497959413d8dd0c5/html5/thumbnails/6.jpg)
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 ...
![Page 7: Branch & Merge Claudio Leite. Sobre @claudiobernardo](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc13d497959413d8dd0c5/html5/thumbnails/7.jpg)
Branch• Branch permite que seja realizado desenvolvimento em paralelo
– Implementando features diferentes em branches diferentes com a mesma base de código
– Mantém diferentes releases em branches diferentes
• Branch == Isolar / Isolamento• Estratégias Comuns:
– 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!
![Page 8: Branch & Merge Claudio Leite. Sobre @claudiobernardo](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc13d497959413d8dd0c5/html5/thumbnails/8.jpg)
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 Main
R1
R1.1
R2
R2.1
FI for ReleaseFI for Release
![Page 9: Branch & Merge Claudio Leite. Sobre @claudiobernardo](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc13d497959413d8dd0c5/html5/thumbnails/9.jpg)
O QUE BRANCH TENTA RESOLVER ?
![Page 10: Branch & Merge Claudio Leite. Sobre @claudiobernardo](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc13d497959413d8dd0c5/html5/thumbnails/10.jpg)
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
![Page 11: Branch & Merge Claudio Leite. Sobre @claudiobernardo](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc13d497959413d8dd0c5/html5/thumbnails/11.jpg)
BRANCH POR RELEASE
![Page 12: Branch & Merge Claudio Leite. Sobre @claudiobernardo](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc13d497959413d8dd0c5/html5/thumbnails/12.jpg)
Branch por Release (Staircase)
R1 B
R2 B
R3
Test ProduçãoC1
C2 Test Produção
Test
![Page 13: Branch & Merge Claudio Leite. Sobre @claudiobernardo](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc13d497959413d8dd0c5/html5/thumbnails/13.jpg)
Bugs
R1 B
R2 B
R3
Test ProduçãoRIC1 C3
C2 Test Produção
Test
C4 RI
RI C5 RI
C6 RI
?
?
![Page 14: Branch & Merge Claudio Leite. Sobre @claudiobernardo](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc13d497959413d8dd0c5/html5/thumbnails/14.jpg)
Pros & ConsPros :• 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
![Page 15: Branch & Merge Claudio Leite. Sobre @claudiobernardo](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc13d497959413d8dd0c5/html5/thumbnails/15.jpg)
BRANCH POR QUALIDADE
![Page 16: Branch & Merge Claudio Leite. Sobre @claudiobernardo](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc13d497959413d8dd0c5/html5/thumbnails/16.jpg)
Branch por Qualidade (Basic Plan)
Dev
QA
Prod
B
B RI
![Page 17: Branch & Merge Claudio Leite. Sobre @claudiobernardo](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc13d497959413d8dd0c5/html5/thumbnails/17.jpg)
Branch por Qualidade (Safe Keeping)main
test
prod
B
B RI
B B
Safe Keeping R1
Safe Keeping R2
![Page 18: Branch & Merge Claudio Leite. Sobre @claudiobernardo](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc13d497959413d8dd0c5/html5/thumbnails/18.jpg)
Bugs no Branch de QA
dev
QA
Prod
B
B RI
FI
L1BUG B
HF
L1
RI
FI
L2
RI
FI
Rx
RI RI
![Page 19: Branch & Merge Claudio Leite. Sobre @claudiobernardo](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc13d497959413d8dd0c5/html5/thumbnails/19.jpg)
Bugs no Branch de Produção
dev
QA
Prod
B
B RI
FI
L-QA1
Bug
B
HF
RI
FI
RI
FIRI
FI
L-QA2L-QA3
L-QA4
L-QA5
RI
Release 1 Release 2 Release 3
RI
FI
L-QA2
![Page 20: Branch & Merge Claudio Leite. Sobre @claudiobernardo](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc13d497959413d8dd0c5/html5/thumbnails/20.jpg)
Pros & ConsPros :• 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.
![Page 21: Branch & Merge Claudio Leite. Sobre @claudiobernardo](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc13d497959413d8dd0c5/html5/thumbnails/21.jpg)
BRANCH POR FEATURE
![Page 22: Branch & Merge Claudio Leite. Sobre @claudiobernardo](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc13d497959413d8dd0c5/html5/thumbnails/22.jpg)
Branch por Feature
RI
RI
RI
feature1
feature 2
feature 3
FIFIB FI
mainFI FI FI
feature 4
B
![Page 23: Branch & Merge Claudio Leite. Sobre @claudiobernardo](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc13d497959413d8dd0c5/html5/thumbnails/23.jpg)
Bug
RI
RI
RI
feature1
feature 2
feature 3
FIFIB FI
mainFI FI FI
feature 4
BBug
![Page 24: Branch & Merge Claudio Leite. Sobre @claudiobernardo](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc13d497959413d8dd0c5/html5/thumbnails/24.jpg)
Pros & ConsPros :• 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
![Page 25: Branch & Merge Claudio Leite. Sobre @claudiobernardo](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc13d497959413d8dd0c5/html5/thumbnails/25.jpg)
BRANCH POR FEATURE VS2012 Demonstração
![Page 26: Branch & Merge Claudio Leite. Sobre @claudiobernardo](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc13d497959413d8dd0c5/html5/thumbnails/26.jpg)
Obrigado !