desenvolvimento organizado com vcs
TRANSCRIPT
BOM DIA!
meu nome:Alwin “Yogarine” Garside
ALVENIR
ALVES
ALWIN
WhoAmI? Desenvolvedor PHP há 4 anos 3 anos de experiência com Subversion 1 ano de experiência com Bazaar SysAdmin/Developer na UEPB (2006-2008) Developer na Itline/CESED (2008-2009)
O que vou falar tanto? O que é VCS? Porquê VCS? Centralizado vs Distribuído Comandos básicos de VCS Introdução a svn, bzr e git
MONOTONE
VCSBZR
GIT
SVNCVS
MERCURIAL
GNU ARCH
SVK
Desenvolvimento organizadocom
WTF = VCS!?
Visual C#(ufa...)
VERSION CONTROL SYSTEM
SISTEMA DE CONTROLE DE VERSÃO
HUH?
PROJETOS SEM VCS:
Pasta por data?
Pasta por versão?
VCS AJUDA A... ...MANTER UM CHANGELOG
CHANGELOG?
CHANGELOG =LOG DE MUDANÇAS
...voltando, VCS AJUDA A... ...MANTER UM CHANGELOG ...VISUALIZAR E APLICAR DIFF'S
DIFF'S?
DIFF = DIFERENÇA
DIFF UNIFICADA:
DIFF LADO-AO-LADO:
...voltando, VCS AJUDA A... ...MANTER UM CHANGELOG ...VISUALIZAR E APLICAR DIFF'S ...TRABALHAR COM MULTIPLAS BRANCHES
BRANCHES?
BRANCH = GALHO
GALHOS:
PROJETO = ÁRVORE(TREE)
TRONCO
(TRUNK)
TREE => TRUNK => BRANCHES
0.1 0.2 0.3
Feature A Feature B Feature C Feature D Feature E
TRUNK
SERIES BRANCHES:
FEATURE BRANCHES:
PROJECT TREE:
BRANCHES!
...voltando, VCS AJUDA A... ...MANTER UM CHANGELOG ...VISUALIZAR E APLICAR DIFF'S ...TRABALHAR COM MULTIPLAS BRANCHES ...FAZER UM MERGE ENTRE 2 BRANCHES
MERGE?
MERGE = JUNÇÃO
0.1 0.2 0.3
Feature A Feature B Feature C Feature D Feature E
TRUNK
SERIES BRANCHES
FEATURE BRANCHES
0.1 0.2 0.3
Feature A Feature B Feature C Feature D Feature E
TRUNK
MERGE
...emfim, VCS AJUDA A... ...MANTER UM CHANGELOG ...VISUALIZAR E APLICAR DIFF'S ...TRABALHAR COM MULTIPLAS BRANCHES ...FAZER MERGES ENTRE BRANCHES ...MUITO, MUITO MAIS!
CENTRALIZADOVS.
DISTRIBUÍDO
VCS CENTRALIZADO REPOSITÓRIO CENTRALIZADO COMPLICA CRIAÇÃO DE “FEATURE
BRANCHES” COLABORADORES MANDAM PATCHES
(DIFF'S) PARA OS MANTENEDORES OS DESENVOLVEDORES TRABALHAM COM
UM WORKING COPY
WORKING COPY?
WORKING COPY =CÓPIA DE TRABALHO
WORKING COPY
REPOSITÓRIO
WORKINGCOPY
SERVIDOR
REVISÂO 123
PEER
WORKING COPY!
...anyway, VCS CENTRALIZADO: REPOSITÓRIO CENTRALIZADO COMPLICA CRIAÇÃO DE “FEATURE
BRANCHES” COLABORADORES MANDAM PATCHES
(DIFF'S) PARA OS MANTENEDORES OS DESENVOLVEDORES TRABALHAM COM
UM WORKING COPY
VCS CENTRALIZADO
REPOSITÓRIOPEER
PEER
MANTENEDOR
PEER
PEER
SERVIDOR
VCS DISTRIBUIDO: REPOSITÓRIO DISTRIBUÍDO FACILITA CRIAÇÃO DE BRANCHES COLABORADORES CRIAM BRANCHES MANTENEDORES FAZER MERGES COM
BRANCHES DE COLABORADORES CADA DESENVOLVEDOR TRABALHA COM
UM PRÓPRIO REPOSITÓRIO
VCS DISTRIBUIDO
main 1.2feature-tal bugfix-bar
main 1.2main
servidor
1.2
feature-x bugfix-y
MANTENEDOR JOÃOJOSÉ
bugfixbar
COMANDOS BÁSICOS DE VCS
COMANDOS BÁSICOS DE VCS CHECKOUT
CHECKOUT
REPOSITÓRIO
WORKINGCOPY
SERVIDOR
REVISÃO 123
PEER
CHECKOUT
COMANDOS BÁSICOS DE VCS checkout (co) commit (cm)
COMMIT
REPOSITÓRIO
WORKINGCOPY
SERVIDOR
REVISÃO 124
PEER
COMMIT
COMANDOS BÁSICOS DE VCS checkout (co) commit (cm) import
IMPORT
REPOSITÓRIO
PROJETOSEM VCS
SERVIDOR
REVISÂO 1
PEER
COMANDOS BÁSICOS DE VCS checkout (co) commit (cm) import export
EXPORT
REPOSITÓRIO
PASTASEM VCS
SERVIDOR
REVISÃO 123
PEER
COMANDOS BÁSICOS DE VCS checkout (co) commit (cm) import export diff branch merge add mv, cp, mkdir, etc.
INTRODUÇÃO A SVN, BZR e GIT
INTRODUÇÃO A SVN, BZR e GIT Introdução ao uso das ferramentas da linha de
comando Assumindo que está usando Linux Para Windows existem ferramentas gráficas
SVN
SVN = Subversion
Subversion Centralizado Mais usado hoje em dia Google Code, Sourceforge, etc. Ótima integração com Eclipse, Zend Studio,
Netbeans, etc.
Subversion Repositório num diretório público, pode ser
hospedado pelo http ou protocolo proprietário Subdiretório .svn em cada diretório contém
metadata
Subversion Ferramentas de linha de comando:
svn svnadmin
Subversion Criando um novo repositório:
# svnadmin create /var/svn/meu_repo
Subversion Importando um novo projeto no repositório:
$ cd meuprojeto $ svn import /var/svn/meu_repo/trunk
Subversion Fazendo um checkout do repositório
$ svn checkout /var/svn/meu_repo/trunk meuprojeto
Subversion Dando commit
$ cd meuprojeto # svn commit -m “Corrigiu bug #x”
Subversion Criando um branch
# svn mkdir /var/svn/meu_repo/branches # svn cp /var/svn/meu_repo/trunk
/var/svn/meu_repo/branches/meu_branch
Subversion Fazendo merge com outro branch:
$ cd meu_projeto $ svn merge /var/svn/meu_repo/branches@2
/var/svn/meu_repo/branches@3
BZR
BZR = Bazaar
Bazaar Feito para poder ser usado de forma distribuída
ou centralizada Desenvolvida pela Canonical Hospedagem no https://launchpad.net Foco em facilidade de uso
Bazaar Metadata fica na pasta .bzr Metadata apenas na pasta principal Uma pasta pode ser working copy e branch ao
mesmo tempo
Bazaar Criar branch para um novo projeto:
$ cd meuprojeto $ bzr init
Adicionar arquivos no working copy: $ bzr add $ bzr commit -m “Initial import”
Bazaar Criar branch do seu projeto:
$ bzr branch meuprojeto meuprojeto-foo Depois, para sincronizar o branch filho:
$ cd meuprojeto-foo $ bzr pull
Empurrando as mudanças para branch pai: $ bzr commit $ bzr push
GIT
GIT Distribuído Criado pelo Linus Torvalds para ser usado no
desenvolvimento do kernel Linux Otimizada para desempenho
GIT Initializar um branch:
$ cd meuprojeto $ git init
Adicionar arquivos no working copy $ git add $ git commit -m “Initial import”
PERGUNTAS?
Mais informações: Sites
http://subversion.tigris.org http://svnbook.red-bean.com http://bazaar-vcs.org http://git-scm.com
Entre em contato comigo: [email protected] (e-mail / Google Talk) [email protected] (Windows Live Messenger) http://www.yogarine.net http://twitter.com/yogarine