View
576
Download
2
Category
Tags:
Preview:
DESCRIPTION
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
Citation preview
BE HAPPY WITH SEMANTIC VERSIONING
AND GIT FLOW
Rogério Prado de Jesus PHP Conference Brasil
Dezembro 2012
QUEM SOU EU?
• @rogeriopradoj - Rogério Prado de Jesus
• PHP desde 2009
• blog: rogeriopradoj.com
• Grupo de usuários: PHPSP
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 !
VCS git, svn, mercurial, cvs...
!
!
Produto !
iOS 6 Ubuntu 12.10
PHP 5.4.9 jQuery 1.8.3
VERSIONAMENTO: PRODUTO
Publicação
Quando outras pessoas começam a
usar seu produto (site, biblioteca…)
… você precisa de estratégias para
gerenciar isso tudo
SEMANTIC VERSIONING
• http://semver.org/
• https://github.com/rogeriopradoj/translations/blob/master/translated/semantic-versioning/pt_BR.md
… aí que entra o …
enquanto a tradução oficial não for
mesclada
Elaborado pelo criador do
@mojombo
@alganet @augustohphttps://github.com/Respect
descobri sobre o tema com esses dois caras…
… assistindo uma discussão de como gerenciar as versões do projeto deles
SEMANTIC VERSIONING
X.Y.Z
Parece conhecido?
esse é o formato das versões…
SEMANTIC VERSIONING
X.Y.Z
major minor patch
é o que a gente já fazia…
…mas agora com uma regra mais rígida…
…um manifesto!
http://semver.org/
Um dos principais pontos do tema é evitar que você (e seus usuários) entre em pânico quando seu produto cresce
de tamanho…
https://en.wikipedia.org/wiki/Dependency_hell
… e consequentemente o número de dependências
aumenta também
COMPOSER
PACKAGIST
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
http://getcomposer.org/
https://packagist.org/
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ê?
index.php
index.php.old
index.php.old.bkp
index.php.old.bkp.2
index.php.old.bkp.2012
… mas tem jeito melhor…
Pode ser isso aqui…
VCS
• Version Control System
• Sistema de controle de versões
• Código fonte
… aqui entra o…
TIPOS VCSCENTRALIZADO
!
DESCENTRALIZADO !
Basicamente são dois tipos…
TIPOS VCSCENTRALIZADO
!
DESCENTRALIZADO !
… sendo essas as ferramentas mais conhecidas de cada um deles
https://subversion.apache.org/ http://www.git-scm.com/
TIPOS VCSCENTRALIZADO
!
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
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 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!
No GIT a criação de branches é assunto
básico…
… primeiros capítulos do manual
O próprio ícone do GIT mostra uma ramificação!!!
O problema é que não existe formalismo… … o que
corporativamente poderia ser problema
(apesar dos DEVs
adorarem!!!)
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)
• Descentralizado Centralizado
É o que eles chamaram de
Descentralizado porque é GIT Centralizado pois
usa um repositório “central”, ou
principal, que é usado para sincronia de todos os outros
Um “origin único” para todos
Mas que não impede que existam as
interações normais do GIT (vários remotos, por
exemplo)
• Descentralizado Centralizado
• Formalização das ramificações / branches
Segundo ponto importante
Main
- feature - release - hotfix
- master - develop
Supporting
Regras para nomes de branches…
… facilitando a comunicação
Time
release branches masterdevelop hotfixesfeature
branches
Feature for future
release
Tag 1.0
Major feature for
next release
From this point on, “next release”
means the release after 1.0
Severe bug fixed for
production: hotfix 0.2
Bugfixes from rel. branch
may be continuously merged back into develop
Tag 0.1
Tag 0.2
Incorporate bugfix in develop
Only bugfixes!
Start of release
branch for 1.0
Author: Vincent Driessen Original blog post: http://nvie.com/archives/323 License: Creative Commons
Modelo da
empresa NVIE
aplicado…
… que até esse
momento não tinha
nome.
GIT-FLOW
• https://github.com/nvie/gitflow/
• Ferramenta CLI para agilizar o processo de implementação do modelo git flow da NVIE.com
Em pouco tempo foi criado
o nome do modelo…
… e também uma ferramenta para facilitar seu uso fora da NVIE
• http://danielkummer.github.com/git-flow-cheatsheet/
• http://danielkummer.github.com/git-flow-cheatsheet/index.pt_BR.html
Alguns cheatsheets para
facilitar o uso
Importante saber que existem outros fluxos de trabalho no GIT…
…alguns famosos:
GitHub Flow: usado pela empresa GitHub
Git "OpenSource" Flow
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.
SEMANTIC VERSIONING
GIT (*) FLOW
É isso aí, pessoal!
OBRIGADO!
• about.me/rogeriopradoj
Recommended