git - fluxo do versionamento adotado

Post on 04-Jul-2015

212 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

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

Fluxo de Versionamento

William LimaAvanti Agência Digital

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

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.

Benchmarking

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

Free e Open Source

• GPLv2

• Free, e melhor…

• Free para sempre.

–Linus Torvalds (criador do Linux e Git)

“O software é como sexo, é melhor quando é

livre.”

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

Fluxo GitAgora é para complicar!

Fluxo Git

• Ramificações (Branchs) Principais:

• Master

• Desenvolvimento

• Ramificações de Auxiliares

• Feature

• Release

• Hot-fix

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.

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

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

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

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

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

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(-)

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).

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(-)

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).

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

top related