GIT: Como uma ferramenta mudou o mundo do software
William Correa
@wilcorrea






t.me/wilcorrea
lt.coop.br
phpzm.rocks
http://lattes.cnpq.br/5492287567035269

https://goo.gl/GEvAEL
~> Tópicos
- O que é versionamento?
- O que é Git?
- O que muda?
- Metodologias de colaboração
- Integração com processos
- Ferramentas e ecossistemas
- Exemplos práticos

# O que é versionamento?
- Histórico de modificações
- Consistência de versões
- Metadados de mudança

# Anota ae
- A evolução dos softwares é totalmente dependente das ferramentas de versionamento
- Sem controle dos artefatos seu projeto está fadado ao caos

# O que é Git
- Ferramenta de versionamento
- Criada por Linus Torvalds
- --everything-is-local


# Raio-x
- Branching and Merging
- Small and Fast
- Distributed
- Data Assurance
- Staging Area
- Free and Open Source
- Trademark


# Branching and Merging
- Modelo de ramificação (branch)
- A criação, fusão e exclusão dessas linhas de desenvolvimento leva segundos (merge)


# Small and Fast
- Escrito em C
- Criado para trabalhar para o kernel Linux


# Distributed



# Data Assurance
- Blame
- Timestamps


# Staging Area


# Free and Open Source
- O Git é lançado sob a licença GNU General Public License versão 2.0, que é uma licença de código aberto. O projeto Git escolheu usar a GPLv2 para garantir sua liberdade de compartilhar e alterar o software livre --- para garantir que o software seja gratuito para todos os seus usuários.


# Trademark


# Mas nem tudo são flores


# Mentira...


# Anota ae
- Git é um amigo poderoso para o seu dia-a-dia
- Além de aprimorar a produção de software ele criou conceitos que aprimoraram a colaboração no desenvolvimento de software

# O que muda?
- Descentralização
- Agilidade
- Open Source


# Algumas coisas mudam


# Outras não


# Mudanças de paradigmas
- Não há mais um servidor
- Não há mais um dono
- Todos tem acesso à tudo
- Colaboração nativa
- Integração com os processos


# Anota ae
- O Open Source agora é o dono o dono da festa
- Estabelecer processos bem definidos
- Entregar metodologias variadas para os times

# Metodologias de colaboração


# Centralized Workflow
- Prós: É simples
- Contras: É simples


# Git Feature Branch Workflow
- Prós: É simples
- Contras: Pouco relisiente



# Gitflow Workflow
- Prós: Pau pra toda obra
- Contras: Complexo


# Forking Workflow
- Prós: É isolado
- Contras: É isolado


# Anota ae
- Os modelos de colaboração podem (leia-se devem) ser adaptados aos processos do seu time
- Pull requests, merge requests, pushes, commits são documentos e ritos de passagem de conhecimento

# Integração com processos
- Utilização de hooks
- Repositórios bare



# Validações
- pre-receive
- pre-commit
- post-update


# Publicar
- git push deploy master
- GIT_WORK_TREE=~/home/project git checkout master -f


# Anota ae
- O Git entrega soluções para impedir que códigos problemáticos sejam entregues
- Ele também permite que você use o workflow para subir o projeto para produção easy-peasy

# Ferramentas e ecossistemas
- Repositórios bare online
- Integração contínua
- Automatização de testes
- Publicação de novas versões


# Quem usa?



# Como usa?


# Como usa?


# Grandes nomes













# Anota ae
- Git conta com uma grande quantidade de players envolvidos apoiando o desenvolvimento do projeto
- Existe uma grande variedade de ferramentas para apoiar o uso do Git (mas são apenas ferramentas que usam o motor principal)

# Exemplos práticos

Hora das palmas
Perguntas?
# Referências
- Git Book (https://goo.gl/QBEzjw)
- Comparing Workflows (https://goo.gl/vZrtEF)
- Usando o Git Workflow para trabalhar com times remotos (https://goo.gl/yY8XrM)
- Plano para estudar Git e GitHub enquanto aprende programação (https://goo.gl/TVh6Kv)

GIT: Como uma ferramenta mudou o mundo do software
By William Correa
GIT: Como uma ferramenta mudou o mundo do software
- 899