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)
Made with Slides.com