Fluxo de desenvolvimento de software utilizando Git

Post on 26-Jul-2015

343 views 2 download

Transcript of Fluxo de desenvolvimento de software utilizando Git

Fluxo de Desenvolvimento de Software utilizando Git

Bruno Ricardo Siqueira

Agenda

Agenda

● O palestrante

● CI&T

● GIT

o Origem e evolução

o Diferenciais

o Ferramentas

o Quem está utilizando

Agenda

● Fluxos de

desenvolvimento

o Centralizado

o Integração

gerenciada

o Dictator and

Lieutenants

o Feature Branch

o Gitflow

Agenda

● Conclusões

● Perguntas

O palestrante

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

Colabore.

Inove.

Transforme.

Ci&T

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

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

Git - Origem e evolução

20102009 2014

2,4%

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

33,3%

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.

Git: an unpleasant

or contemptible

person.

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

- Linus Torvalds

Git - Origem e evolução

Git - Diferenciais

● Distribuído

● Integridade do código

garantida

● Staging area

● Licenciado sob GNU Public

License v 2.0: OPEN

SOURCE!!!

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

Flexívelao

extremo.

Git - Ferramentas

Git - Quem está utilizando?

● Empresas de tecnologia e

software

● Empresas de

telecomunicações

● ...

Fluxos de desenvolvimento

Fluxos de desenvolvimento - Centralizado

● Mesmo estilo do Subversion

● Repositório central

compartilhado

● Bom para efetuar a

transição do SVN para o Git

Mesmo fluxo do

Subversion só que ainda

melhor!

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

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.

Joffrey publica sua funcionalidade:

git push origin master

Fluxos de desenvolvimento - Centralizado

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

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

git pull --rebase origin master

Fluxos de desenvolvimento - Centralizado

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

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, ....

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

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...

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

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.

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.

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...

Fluxos de desenvolvimento - GitFlow

Fluxos de desenvolvimento - GitFlow

GitFlow utilizado em ferramentas como SourceTree e SmartGit

Conclusões

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

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...

Dúvidas?

Brutomesmo!

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

bricardo@ciandt.com