SAMBA TECH
Processo de desenvolvimento
Processo de Desenvolvimento na samba usando Git, GitHub,
Jenkins e BluePill como ferramentas de apoio.
Processo de desenvolvimento no Sprint
Como era (é)?
A nova proposta...
Desenvolvimento usando feature branches
Por quê usar feature branches?
- Branches são “baratos”- Separação do código das features- Facilidade para QA garantir que a feature está funcionando- Fácil gerenciamento da release- ...
Como fica então?
E na prática, como funciona?
Como criar um branch?
•$ git checkout -b <feature-branch-name>
Como alternar entre branches?
•$ git checkout <feature-branch-name>
Como fazer push das minhas modificações?
•$ git commit -a -m”minha nova feature”•$ git push origin <feature-branch-name>
Merge ou Rebase?
•Depende...
O que o merge faz?
•- Um novo commit é criado no HEAD do stack de commits, marcando o momento em que duas cabeças distintas foram transformadas em uma só.
Merge...
$ git pull origin master$ git checkout <feature-branch-name>$ git merge master
Vantagem do Merge
•- Maior facilidade para entender quando uma cabeça foi mesclada com outra.
O que o rebase faz?
•- Recorta o commit – o commit perde a referência do parent.•- Aplica todas as modificações com as quais você está fazendo o rebase.•- Cola suas modificações em cima desta nova base, com novo SHA1 – ou seja, um novo commit.
O que o rebase faz?
Rebase...
•$ git checkout -b <feature-branch-name>•..hack.hack..•$ git commit•$ git rebase master•$ git checkout master•$ git merge <feature-branch-name>
Quando não usar o Rebase?
- Nunca, NUNCA use rebase em branches públicos.
Push
$ git push <feature-branch-name>
E como testar minha feature?
- Jenkins - BluePill
Jenkins
BluePill
Release-Notes
•- Incremental durante o Sprint•- Direto na interface do GitHub
Release-Notes
•- Maiores informações na colméia: http://colmeia.sambatech.com.br/display/comofas/Dicas+Release-Notes
Como colocar meu código em produção?
•Pull-Request
Pull-Request – Revisão de Código
Pull-Request – Revisão de Código
Pull-Request – Revisão de Código
Observações:- Commit no HEAD do branch em pull-request faz o HEAD do pull-request andar também.
Quando testar?
Aberto para que a equipe escolha.
Mas dar preferência para integração na quarta-feira ou quinta-feira.
Processo de Hot Fix
Hot Fix
•Fork para a conta pessoal
Hot Fix
•Pull-Request para master de Desenvolvimento e master de Produção.
Hot Fix
FAQ
•Qual a melhor forma de ir para uma revisão específica e depois retornar para a minha revisão (parece algo
simples, mas já tive problema com isso)?
FAQ
•Qual a melhor forma de ir para uma revisão específica e depois retornar para a minha revisão (parece algo
simples, mas já tive problema com isso)?
•$ git branch branchname <sha1-of-commit>•$ git branch branchname HEAD~3
FAQ
•O HG permite push e pull de um repositório que esteja na máquina de um dos desenvolvedores por exemplo. Mas acho que no GIT o mais indicado é criar um brach remoto neste caso (já li que existe um tipo específico
de branch pra isso). Certo?
O git é um sistema de versionamento distribuído. Qual a melhor forma de duas pessoas
trabalharem em uma feature de forma independente da equipe?
FAQ
•Como faço para ver o que foi mudado no meu branch remoto, sem atualizar meu branch atual?
FAQ
•$ git fetch && git log ..origin/master --oneline
•Como faço para ver o que foi mudado no meu branch remoto, sem atualizar meu branch atual?
FAQ
Fiz pull, realizei um monte de modificações. Quero simplesmente "desistir" delas, voltar ao estado antes das modificações. Qual o comando?
FAQ
Fiz pull, realizei um monte de modificações. Quero simplesmente "desistir" delas, voltar ao estado antes das
modificações. Qual o comando?
Se estiver no working directory:$ git checkout -- <file>
Se já tiver dado “add” (staging):$ git reset HEAD <file>
Se já tiver commitado:$ git reflog$ git reset --hard HEAD@{1}
http://anders.janmyr.com/2009/09/git-undo-reset-or-revert.html
OBRIGADO!
João Maciel, DevOps - Samba [email protected]