Top Banner
Fluxo de Desenvolvimento de Software utilizando Git Bruno Ricardo Siqueira
44

Fluxo de desenvolvimento de software utilizando Git

Jul 26, 2015

Download

Software

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Fluxo de desenvolvimento de software utilizando Git

Fluxo de Desenvolvimento de Software utilizando Git

Bruno Ricardo Siqueira

Page 2: Fluxo de desenvolvimento de software utilizando Git

Agenda

Page 3: Fluxo de desenvolvimento de software utilizando Git

Agenda

● O palestrante

● CI&T

● GIT

o Origem e evolução

o Diferenciais

o Ferramentas

o Quem está utilizando

Page 4: Fluxo de desenvolvimento de software utilizando Git

Agenda

● Fluxos de

desenvolvimento

o Centralizado

o Integração

gerenciada

o Dictator and

Lieutenants

o Feature Branch

o Gitflow

Page 5: Fluxo de desenvolvimento de software utilizando Git

Agenda

● Conclusões

● Perguntas

Page 6: Fluxo de desenvolvimento de software utilizando Git

O palestrante

Page 7: Fluxo de desenvolvimento de software utilizando Git

Bruno Ricardo Siqueira.

Desenvolvedor web e evangelista PHP no Brasil. Entusiasta Docker. Apaixonado por Git.

Trabalhando com internet há 8 anos, Bacharel em Sistemas da Informação formado pelo ICMC - USP, trabalhando atualmente na empresa CI&T, desempenhando o papel de Engenheiro de Software.

O palestrante

Page 8: Fluxo de desenvolvimento de software utilizando Git
Page 9: Fluxo de desenvolvimento de software utilizando Git

Colabore.

Inove.

Transforme.

Ci&T

Page 10: Fluxo de desenvolvimento de software utilizando Git
Page 11: Fluxo de desenvolvimento de software utilizando Git

Git

Page 12: Fluxo de desenvolvimento de software utilizando Git

Git - Origem e evoluçãoGit - Origem e evolução

● 2002 - 2005: Linux +

BitKeeper

● Abril/2005: Linus Torvalds

cria o Git

● Junho/2005: Git passa a ser

o gerenciador oficial do

Kernel do Linux

Page 13: Fluxo de desenvolvimento de software utilizando Git

Git - Origem e evolução

● Julho/2005: Junio Hamano

passa a ser o mantenedor

oficial

● Dezembro/2005: Versão

1.0

● Fevereiro/2008: Nasce a

ferramenta colaborativa

GitHub

● Outubro/2011: BitBucket

adiciona suporte ao Git

Page 14: Fluxo de desenvolvimento de software utilizando Git

Git - Origem e evolução

20102009 2014

2,4%

Fonte: Eclipse Community Survey - http://eclipse.dzone.com/articles/eclipse-community-survey-2014

33,3%

Page 15: Fluxo de desenvolvimento de software utilizando Git

Em 2015 já são mais de 20 milhões

de repositórios e 9 milhões de usuários.

Git - Origem e evolução

Em 2013 apenas no GitHub existiam mais de 10 milhões de repositórios ativos.

Page 16: Fluxo de desenvolvimento de software utilizando Git

Git: an unpleasant

or contemptible

person.

Page 17: Fluxo de desenvolvimento de software utilizando Git

“I'm an egotistical bastard, and I name all my projects after myself. First Linux, now git.”

- Linus Torvalds

Git - Origem e evolução

Page 18: Fluxo de desenvolvimento de software utilizando Git

Git - Diferenciais

● Distribuído

● Integridade do código

garantida

● Staging area

● Licenciado sob GNU Public

License v 2.0: OPEN

SOURCE!!!

Page 19: Fluxo de desenvolvimento de software utilizando Git

Git - Diferenciais

● Branching and Merging

o mudança de contexto

facilitada

o codebases baseadas

em regras

● Leve: baixo consumo de

memória

● Robusto: criado para lidar

com codebases gigantescas

● Rápido, muito rápido

Fonte: Git Website - http://git-scm.com

Page 20: Fluxo de desenvolvimento de software utilizando Git

Flexívelao

extremo.

Page 21: Fluxo de desenvolvimento de software utilizando Git

Git - Ferramentas

Page 22: Fluxo de desenvolvimento de software utilizando Git

Git - Quem está utilizando?

● Empresas de tecnologia e

software

● Empresas de

telecomunicações

● ...

Page 23: Fluxo de desenvolvimento de software utilizando Git

Fluxos de desenvolvimento

Page 24: Fluxo de desenvolvimento de software utilizando Git

Fluxos de desenvolvimento - Centralizado

● Mesmo estilo do Subversion

● Repositório central

compartilhado

● Bom para efetuar a

transição do SVN para o Git

Page 25: Fluxo de desenvolvimento de software utilizando Git

Mesmo fluxo do

Subversion só que ainda

melhor!

Page 26: Fluxo de desenvolvimento de software utilizando Git

Fluxos de desenvolvimento - Centralizado

Joffrey cria um repositório central:

ssh joffrey@westeros git init --bare /kings/landing/iron-throne.git

Cersei e Tywin clonam o repositório

central:

git clone cersei@westeros/kings/landing/iron-

throne.git

git clone tywin@westeros/kings/landing/iron-

throne.git

Page 27: Fluxo de desenvolvimento de software utilizando Git

Joffrey trabalha em seu repositório local:

git status # View the state of the repogit add <some-file> # Stage a filegit commit # Commit a file</some-file>

Fluxos de desenvolvimento - Centralizado

Cersei trabalha em sua feature em separado, também em seu repositório local.

Page 28: Fluxo de desenvolvimento de software utilizando Git

Joffrey publica sua funcionalidade:

git push origin master

Fluxos de desenvolvimento - Centralizado

Cersei tenta publicar sua funcionalidade mas tem sua requisição recusada.

Page 29: Fluxo de desenvolvimento de software utilizando Git

Cersei faz um rebase de suas alterações em cima das alterações de Joffrey:

git pull --rebase origin master

Fluxos de desenvolvimento - Centralizado

Page 30: Fluxo de desenvolvimento de software utilizando Git

Cersei soluciona os conflitos, adiciona suas alterações:

git add <some-file> git rebase --continue

Fluxos de desenvolvimento - Centralizado

Cersei publica suas alterações:

git push origin master

Page 31: Fluxo de desenvolvimento de software utilizando Git

Fluxos de desenvolvimento - Integração gerenciada

● Somente o mantenedor do

efetua commits no

repositório original

● Contribuidores trabalham

em forks.

● Integrações são solicitadas

via pull request e

efetuadas pelo mantenedor

● GitHub, BitBucket,

GitLab, ....

Page 32: Fluxo de desenvolvimento de software utilizando Git

Fluxos de desenvolvimento - Dictator and Lieutenants

● Tenentes gerenciam

repositórios dos módulos

● Contribuidores trabalham

em forks dos módulos

● Ditador gerencia

integrações entre os

módulos

● Linux kernel

Page 33: Fluxo de desenvolvimento de software utilizando Git

Fluxos de desenvolvimento - Feature branch

● Features desenvolvidas em

branches separadas

● Mantenedor efetua merge

das features finalizadas

● Merge e/ou pull requests

● CI&T, Aptor, Google, PayPal,

Facebook...

Page 34: Fluxo de desenvolvimento de software utilizando Git

Cersei inicia uma nova funcionalidade:

git checkout -b cersei-feature mastergit statusgit add <some-file>git commit

Fluxos de desenvolvimento - Feature branch

Cersei termina seu expediente e envia sua feature ao repositório remoto:

git push -u origin cersei

Page 35: Fluxo de desenvolvimento de software utilizando Git

Fluxos de desenvolvimento - Feature branch

Cersei finaliza sua funcionalidade e envia ao repositório remoto central:

git push

Joffrey recebe um pull request e o analiza.

Page 36: Fluxo de desenvolvimento de software utilizando Git

Fluxos de desenvolvimento - Feature branch

Joffrey efetua o merge da feature de Cersei:

git checkout mastergit pullgit pull origin cersei-featuregit push

Cersei pode efetuar alterações em sua feature, recomeçando o fluxo.

Page 37: Fluxo de desenvolvimento de software utilizando Git

Fluxos de desenvolvimento - GitFlow

● Vincent Driessen (2010)

● Estabelece uma

padronização para o fluxo

de feature branches

● master, develop, feature/*,

hotfix/*

● CI&T, Motorola, Google,

Facebook, Microsoft,

Atlassian...

Page 38: Fluxo de desenvolvimento de software utilizando Git

Fluxos de desenvolvimento - GitFlow

Page 39: Fluxo de desenvolvimento de software utilizando Git

Fluxos de desenvolvimento - GitFlow

GitFlow utilizado em ferramentas como SourceTree e SmartGit

Page 40: Fluxo de desenvolvimento de software utilizando Git

Conclusões

Page 41: Fluxo de desenvolvimento de software utilizando Git

Conclusões

● Objetivos definidos

● A ferramenta deve se

adaptar à sua realidade

● Clareza nos processos

● Evitar burocratização

desnecessária

● Manter comunicação ativa

entre os membros do time

Page 42: Fluxo de desenvolvimento de software utilizando Git

Conclusões

● Definir métricas

● Avaliar necessidades de

adaptação do fluxo

● Foco na eficiência

● Qualidade nas entregas

● Criar e manter

documentação do fluxo:

gráficos, checklists...

Page 43: Fluxo de desenvolvimento de software utilizando Git

Dúvidas?

Page 44: Fluxo de desenvolvimento de software utilizando Git

Brutomesmo!

http://www.ciandt.com/card/vagas-abertas

[email protected]