BE HAPPY WITH
SEMANTIC VERSIONING
AND GIT FLOW
Rogério Prado de Jesus	

PHP Conference Brasil	

Dezembro 2012
QUEM SOU EU?

• @rogeriopradoj
• PHP

- Rogério Prado de Jesus	


desde 2009	


• blog: rogeriopradoj.com	

• Grupo

de us...
VERSIONAMENTO

É sobre isso que vamos
falar…
VERSIONAMENTO
Código Fonte	


Mas esse não
é o único tipo
VERSIONAMENTO
Código Fonte	


Produto

!

Temos que
lembrar desse
aqui também
VERSIONAMENTO
Código Fonte	


Produto	


!

!

VCS	

git, svn, mercurial, cvs...	


iOS 6	

Ubuntu 12.10	

PHP 5.4.9	

jQu...
VERSIONAMENTO: PRODUTO
Quando outras
pessoas começam a
usar seu produto
(site, biblioteca…)

Publicação

… você precisa de...
… aí que entra o …

SEMANTIC VERSIONING
• http://semver.org/	


enquanto a tradução
oficial não for
mesclada

• https://git...
@alganet

@augustohp
https://github.com/Respect

descobri sobre o tema com esses
dois caras…
… assistindo uma discussão de...
SEMANTIC VERSIONING
esse é o formato das
versões…

X.Y.Z
Parece conhecido?
SEMANTIC VERSIONING
é o que a gente já fazia…

http://semver.org/

X.Y.Z
major

minor

patch

…mas agora com uma regra
mai...
Um dos principais pontos do tema é
evitar que você (e seus usuários) entre
em pânico quando seu produto cresce
de tamanho…...
COMPOSER
http://getcomposer.org/

PACKAGIST
https://packagist.org/

Esses dois caras do PHP sugerem
que você use o SEMVER…...
SEMANTIC VERSIONING
X.Y.Z
major

minor

patch

Para ninguém esquecer!
http://semver.org/
VERSIONAMENTO
Código Fonte	


Produto	


!

!

Já vimos produto…
… vamos para código fonte
VERSIONAMENTO:
CÓDIGO FONTE
O que é para você?
Pode ser isso aqui…
index.php
index.php.old
index.php.old.bkp
index.php.old.bkp.2
index.php.old.bkp.2012
… mas tem
jeito m...
… aqui entra o…

VCS

• Version

Control System	


• Sistema

de controle de versões	


• Código

fonte
TIPOS VCS
CENTRALIZADO	


DESCENTRALIZADO	


!

!

Basicamente são
dois tipos…
TIPOS VCS
CENTRALIZADO	


DESCENTRALIZADO	


!

!

https://subversion.apache.org/

http://www.git-scm.com/

… sendo essas ...
TIPOS VCS
CENTRALIZADO	


DESCENTRALIZADO	


!

!

Existe um movimento de
migração de projetos
(principalmente open
source...
RAMIFICANDO O VCS

Complexo e formal

Simples e eficiente

cada um deles
tem suas
particularidades
esse é o padrão formal no
SVN (subversion)…
…que geralmente só
usuários avançados
usavam pela
complexidade…
… nos manuais ...
No GIT a criação de
branches é assunto
básico…

O próprio ícone do GIT
mostra uma ramificação!!!

… primeiros capítulos do
...
A SUCCESSFUL GIT
BRANCHING MODEL

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

• https://github.com/rogerio...
É o que eles
chamaram de

• Descentralizado

Centralizado

Descentralizado
porque é GIT

Centralizado pois
usa um repositó...
Um “origin único”
para todos

Mas que não impede
que existam as
interações normais
do GIT (vários
remotos, por
exemplo)
• Descentralizado
• Formalização

Centralizado	


das ramificações / branches

Segundo ponto
importante
Regras para nomes
de branches…
Main
- master	

- develop	


… facilitando a
comunicação
Supporting
- feature	

- release	
...
feature
branches

develop

release branches

hotfixes

master

Time

Tag

0.1

Feature
for future
release

Severe bug
fixe...
Em pouco
tempo foi criado
o nome do
modelo…

GIT-FLOW
… e também uma ferramenta para
facilitar seu uso fora da NVIE

• htt...
Alguns
cheatsheets para
facilitar o uso

• http://danielkummer.github.com/git-flow-cheatsheet/	

• http://danielkummer.gith...
Importante saber que existem
outros fluxos de trabalho no GIT…
…alguns famosos:

Git "OpenSource" Flow
GitHub Flow: usado p...
É isso aí, pessoal!

SEMANTIC VERSIONING

GIT (*) FLOW
OBRIGADO!

• about.me/rogeriopradoj
Próximos SlideShares
Carregando em…5
×

Be Happy With Semantic Versioning And Git Flow - PHP Conference Brasil 2012

843 visualizações

Publicada em

Palestra apresentada na PHP Conference Brasil, o maior evento de PHP da América Latina, edição 2012.

Mais informações:

- http://www.phpconference.com.br/

- https://joind.in/talk/view/7764

Publicada em: Tecnologia
0 comentários
3 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
843
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
4
Comentários
0
Gostaram
3
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Be Happy With Semantic Versioning And Git Flow - PHP Conference Brasil 2012

  1. 1. BE HAPPY WITH SEMANTIC VERSIONING AND GIT FLOW Rogério Prado de Jesus PHP Conference Brasil Dezembro 2012
  2. 2. QUEM SOU EU? • @rogeriopradoj • PHP - Rogério Prado de Jesus desde 2009 • blog: rogeriopradoj.com • Grupo de usuários: PHPSP
  3. 3. VERSIONAMENTO É sobre isso que vamos falar…
  4. 4. VERSIONAMENTO Código Fonte Mas esse não é o único tipo
  5. 5. VERSIONAMENTO Código Fonte Produto ! Temos que lembrar desse aqui também
  6. 6. VERSIONAMENTO Código Fonte Produto ! ! VCS git, svn, mercurial, cvs... iOS 6 Ubuntu 12.10 PHP 5.4.9 jQuery 1.8.3 ! !
  7. 7. VERSIONAMENTO: PRODUTO Quando outras pessoas começam a usar seu produto (site, biblioteca…) Publicação … você precisa de estratégias para gerenciar isso tudo
  8. 8. … aí que entra o … SEMANTIC VERSIONING • http://semver.org/ enquanto a tradução oficial não for mesclada • https://github.com/rogeriopradoj/translations/blob/master/ translated/semantic-versioning/pt_BR.md Elaborado pelo criador do @mojombo
  9. 9. @alganet @augustohp https://github.com/Respect descobri sobre o tema com esses dois caras… … assistindo uma discussão de como gerenciar as versões do projeto deles
  10. 10. SEMANTIC VERSIONING esse é o formato das versões… X.Y.Z Parece conhecido?
  11. 11. SEMANTIC VERSIONING é o que a gente já fazia… http://semver.org/ X.Y.Z major minor patch …mas agora com uma regra mais rígida… …um manifesto!
  12. 12. Um dos principais pontos do tema é evitar que você (e seus usuários) entre em pânico quando seu produto cresce de tamanho… … e consequentemente o número de dependências aumenta também https://en.wikipedia.org/wiki/Dependency_hell
  13. 13. COMPOSER http://getcomposer.org/ PACKAGIST https://packagist.org/ Esses dois caras do PHP sugerem que você use o SEMVER… …o que facilita a vida de quem for usar os seus pacotes Slideshares recomendados se quiser saber mais: - http://www.slideshare.net/rdohms - http://www.slideshare.net/rogeriopradoj
  14. 14. SEMANTIC VERSIONING X.Y.Z major minor patch Para ninguém esquecer! http://semver.org/
  15. 15. VERSIONAMENTO Código Fonte Produto ! ! Já vimos produto… … vamos para código fonte
  16. 16. VERSIONAMENTO: CÓDIGO FONTE O que é para você?
  17. 17. Pode ser isso aqui… index.php index.php.old index.php.old.bkp index.php.old.bkp.2 index.php.old.bkp.2012 … mas tem jeito melhor…
  18. 18. … aqui entra o… VCS • Version Control System • Sistema de controle de versões • Código fonte
  19. 19. TIPOS VCS CENTRALIZADO DESCENTRALIZADO ! ! Basicamente são dois tipos…
  20. 20. TIPOS VCS CENTRALIZADO DESCENTRALIZADO ! ! https://subversion.apache.org/ http://www.git-scm.com/ … sendo essas as ferramentas mais conhecidas de cada um deles
  21. 21. TIPOS VCS CENTRALIZADO DESCENTRALIZADO ! ! Existe um movimento de migração de projetos (principalmente open source) para descentralizados… … o próprio PHP é um dos casos… https://github.com/php/ php-src
  22. 22. RAMIFICANDO O VCS Complexo e formal Simples e eficiente cada um deles tem suas particularidades
  23. 23. esse é o padrão formal no SVN (subversion)… …que geralmente só usuários avançados usavam pela complexidade… … nos manuais de SVN são sempre os últimos capítulos. Mesmo assim, corporativamente era um bom modelo… … por causa de seu controle e rigidez (mesmo deixando os DEVs malucos!!!) Quem nunca ouviu: “para tudo aí que eu vou mesclar! e "tô" dando lock!
  24. 24. No GIT a criação de branches é assunto básico… O próprio ícone do GIT mostra uma ramificação!!! … primeiros capítulos do manual O problema é que não existe formalismo… … o que corporativamente poderia ser problema (apesar dos DEVs adorarem!!!)
  25. 25. A SUCCESSFUL GIT BRANCHING MODEL • http://nvie.com/posts/a-successful-git-branching-model/ • https://github.com/rogeriopradoj/translations/blob/master/ translated/a-successful-git-branching-model/pt_BR.md Um modelo de ramificação parecido com o SVN (formal)… …mas no GIT (sem os problemas do SVN)
  26. 26. É o que eles chamaram de • Descentralizado Centralizado Descentralizado porque é GIT Centralizado pois usa um repositório “central”, ou principal, que é usado para sincronia de todos os outros
  27. 27. Um “origin único” para todos Mas que não impede que existam as interações normais do GIT (vários remotos, por exemplo)
  28. 28. • Descentralizado • Formalização Centralizado das ramificações / branches Segundo ponto importante
  29. 29. Regras para nomes de branches… Main - master - develop … facilitando a comunicação Supporting - feature - release - hotfix
  30. 30. feature branches develop release branches hotfixes master Time Tag 0.1 Feature for future release Severe bug fixed for production: hotfix 0.2 Major feature for next release Incorporate bugfix in develop Tag 0.2 Start of release branch for 1.0 From this point on, “next release” means the release after 1.0 Only bugfixes! Bugfixes from rel. branch may be continuously merged back into develop Author: Vincent Driessen Original blog post: http://nvie.com/archives/323 License: Creative Commons Tag 1.0 Modelo da empresa NVIE aplicado … … que até esse momento não tinha nome.
  31. 31. Em pouco tempo foi criado o nome do modelo… GIT-FLOW … e também uma ferramenta para facilitar seu uso fora da NVIE • https://github.com/nvie/gitflow/ • Ferramenta CLI para agilizar o processo de implementação do modelo git flow da NVIE.com
  32. 32. Alguns cheatsheets para facilitar o uso • http://danielkummer.github.com/git-flow-cheatsheet/ • http://danielkummer.github.com/git-flow-cheatsheet/ index.pt_BR.html
  33. 33. Importante saber que existem outros fluxos de trabalho no GIT… …alguns famosos: Git "OpenSource" Flow GitHub Flow: usado pela empresa GitHub Nome inventado por @rogeriopradoj :-) Principal diferença em relação ao NVIE git-flow: usa menos branches, mas mantém a ideia de repositório central É o que é usado na maioria dos projetos OpenSource, com a ideia de Forks, Pull Requests etc.
  34. 34. É isso aí, pessoal! SEMANTIC VERSIONING GIT (*) FLOW
  35. 35. OBRIGADO! • about.me/rogeriopradoj

×