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