git - fluxo do versionamento adotado

22
Fluxo de Versionamento William Lima Avanti Agência Digital

Upload: william-lima

Post on 04-Jul-2015

212 views

Category:

Technology


3 download

DESCRIPTION

Pequena Apresentação do Modelo de Fluxo de Utilização adotado. Overview de baixa complexidade para indicar todos os estagios e forma de versionar adotada.

TRANSCRIPT

Page 1: Git - Fluxo do Versionamento adotado

Fluxo de Versionamento

William LimaAvanti Agência Digital

Page 2: Git - Fluxo do Versionamento adotado

Sistema de Controle de

Versão

• Controle de histórico

• Trabalho em equipe

• Marcação e resgate de versões estáveis

• Ramificação do Projeto

Page 3: Git - Fluxo do Versionamento adotado

Por que Git?• Distribuído

• Um clone “completo” vai para a maquina do desenvolvedor.

• Versionamento local.

• Modelo de Branch.

• Fácil: checkout -b <nomeDoBanchFeature>

• Conveniente: Tente, crie, comite, descarte, volte atrás.

• Pequeno e Rápido.

• Processos Locais.

• Confiabilidade.

• Efetivo.

Page 4: Git - Fluxo do Versionamento adotado

Benchmarking

Não acho justo, mas também é um ponto a se analisar.

Page 5: Git - Fluxo do Versionamento adotado

Free e Open Source

• GPLv2

• Free, e melhor…

• Free para sempre.

Page 6: Git - Fluxo do Versionamento adotado

–Linus Torvalds (criador do Linux e Git)

“O software é como sexo, é melhor quando é

livre.”

Page 7: Git - Fluxo do Versionamento adotado

Funções Básicas$git init

Transforma o diretório atual em repositório git.

$git init <dir>

Cria um diretório <dir> e transforma em repositório

git.

$git clone <repo.git>

Clona o repositório para maquina local

$git clone <repo.git> <dir>

Clona o repositório para maquina o diretório <dir>

Realiza o commit com a mensagem

$git status

Lista arquivos que não estão na área transitória, e

os arquivos que não estão sendo rastreados.

$git add <arquivo|dir>

adiciona as mudanças do arquivo | diretório

$git reset <arquivo>

Remove as mudanças do arquivo

$git commit -m ‘<msg>'

Realiza o commit com a mensagem

git blame <arquivo>

Exibe quem modificou cada linha do arquivo

<arquivo>, incluindo a data e commit.

$git diff <commit>

Exibe a diferença nos arquivos entre o commit

<commit> e o diretório local

Page 8: Git - Fluxo do Versionamento adotado

Fluxo GitAgora é para complicar!

Page 9: Git - Fluxo do Versionamento adotado

Fluxo Git

• Ramificações (Branchs) Principais:

• Master

• Desenvolvimento

• Ramificações de Auxiliares

• Feature

• Release

• Hot-fix

Page 10: Git - Fluxo do Versionamento adotado
Page 11: Git - Fluxo do Versionamento adotado

Fluxo Git

main branches

Ramificações Principais

• MASTER: é o código fonte

principal, deve refletir o que

está em produção atualmente.

• DEVELOP: refere-se as

últimas mudanças para o

próximo release.

Page 12: Git - Fluxo do Versionamento adotado

Fluxo Git

support branches

Ramificações Auxiliares

FEATURE

• Utilizada para novos recursos ou

releases distantes.

• Normalmente saem de um brach

de desenvolvimento.

• Deve ser feito fundido de volta ao

branch de desenvolvimento.

• Convenção de nome do branch:

<desenvolvedor>-<feature>

william-galeria

Page 13: Git - Fluxo do Versionamento adotado

Fluxo Git

support branches

Ramificações Auxiliares

RELEASE

• Prepara o versionamento para

produção (número da versão,

etc).

• Origem natural: DEVELOP

• Enviadados para MASTER e

DEVELOP

• Convenção de nome do branch:

release-*

release-1.0

Page 14: Git - Fluxo do Versionamento adotado

Fluxo Git

support branches

Ramificações Auxiliares

HOT-FIX

• Quando é necessário fazer uma

correção imediata. Bug Crítico.

• SEMPRE deve ter sua origem na

versão que está em produção

atualmente.

• Deve enviar suas correções para

MASTER e DEVELOP

• Convenção de nome do branch:

hotfix-*

hotfix-1.2.1

Page 15: Git - Fluxo do Versionamento adotado
Page 16: Git - Fluxo do Versionamento adotado

Feature. Como?$ git checkout -b myfeature develop

Switched to a new branch “myfeature”

• >>>> Faço o que tem fazer

$ git checkout develop

Switched to branch 'develop'

$ git merge --no-ff myfeature

Updating ea1b82a..05e9557

(Summary of changes)

$ git branch -d myfeature

Deleted branch myfeature (was 05e9557).

$ git push origin develop

Page 17: Git - Fluxo do Versionamento adotado

--no-ff

• Esta flag gera mais um commit

no merge.

• Sem ela é impossível

acompanhar a origem das

mudanças (de qual branch

saiu).

• Sem ela você precisa ler todo

o log para acompanhar de

onde cada mudança se

originou.

Page 18: Git - Fluxo do Versionamento adotado

Release. Como?

$ git checkout -b release-1.2 develop

Switched to a new branch "release-1.2"

Modifique manualmente os arquivos README, RELEASE,

NOTES, ETC.

$ git commit -a -m "Bumped version number to 1.2"

[release-1.2 74d9424] Bumped version number to

1.2

1 files changed, 1 insertions(+), 1 deletions(-)

Page 19: Git - Fluxo do Versionamento adotado

Fechando o Release. Como?Você precisa passar as modificações para o branch principal, o master, e colocar uma tag nesta versão.

$ git checkout master

Switched to branch 'master'

$ git merge --no-ff release-1.2

Merge made by recursive.

(Summary of changes)

Você precisa também garantir que o branch develop seja atualizado com as informações.

$ git tag -a 1.2

git checkout develop

Switched to branch 'develop'

$ git merge --no-ff release-1.2

Merge made by recursive.

(Summary of changes)

Agora você deve com calma resolver os conflitos de merge.

Por último excluir o branch release.

$ git branch -d release-1.2

Deleted branch release-1.2 (was ff452fe).

Page 20: Git - Fluxo do Versionamento adotado

Hot-Fix. Como?$ git checkout -b hotfix-1.2.1 master

Switched to a new branch "hotfix-1.2.1"

Modifique manualmente os arquivos README, RELEASE, NOTES, ETC.

$ git commit -a -m "Bumped version number to 1.2.1"

[hotfix-1.2.1 41e61bb] Bumped version number to 1.2.1

1 files changed, 1 insertions(+), 1 deletions(-)

Corrija o bug e faça commit.

$ git commit -m "Fixed severe production problem"

[hotfix-1.2.1 abbe5d6] Fixed severe production problem

5 files changed, 32 insertions(+), 17 deletions(-)

Page 21: Git - Fluxo do Versionamento adotado

Fechando Hot-Fix. Como?Você precisa passar as modificações para o branch principal, o master, e colocar uma tag nesta versão.

$ git checkout master

Switched to branch 'master'

$ git merge --no-ff hotfix-1.2.1

Merge made by recursive.

(Summary of changes)

$ git tag -a 1.2.1

Você precisa também garantir que o branch develop seja atualizado com as informações.

$ git checkout develop

Switched to branch 'develop'

$ git merge --no-ff hotfix-1.2.1

Merge made by recursive.

(Summary of changes)

Agora você deve com calma resolver os conflitos de merge.

Por último excluir o branch release.

git branch -d hotfix-1.2.1

Deleted branch hotfix-1.2.1 (was abbe5d6).

Page 22: Git - Fluxo do Versionamento adotado

Referências• http://nvie.com/posts/a-successful-git-branching-model/

• https://www.atlassian.com/git/workflows#!workflow-gitflow

• http://learn.github.com/p/tagging.html

• http://git-scm.com/

• http://rogerdudler.github.io/git-guide/index.pt_BR.html

• http://git-scm.com/book/en/Git-Basics-Tips-and-Tricks

• http://www.javaworld.com/article/2113465/developer-tools-ideit-

smart-20-essential-tips-for-/developer-tools-ide/git-smart-20-

essential-tips-for-git-and-github-users.html