Desenvolvimento organizado com VCS
Upcoming SlideShare
Loading in...5
×
 

Desenvolvimento organizado com VCS

on

  • 1,969 views

 

Statistics

Views

Total Views
1,969
Views on SlideShare
1,962
Embed Views
7

Actions

Likes
2
Downloads
31
Comments
2

1 Embed 7

http://www.slideshare.net 7

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Desenvolvimento organizado com VCS Desenvolvimento organizado com VCS Presentation Transcript

  • BOM DIA!
  • meu nome: Alwin “Yogarine” Garside
  • ALVENIR
  • ALVES
  •  
  • AL W IN
  • 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 VCS BZR GIT SVN CVS MERCURIAL GNU ARCH SVK Desenvolvimento organizado com
  • 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
  • PROJECT TREE: 0.1 0.2 0.3 Feature A Feature B Feature C Feature D Feature E TRUNK SERIES BRANCHES: FEATURE BRANCHES:
  • 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!
  • CENTRALIZADO VS. 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 WORKING COPY 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ÓRIO PEER 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.2 feature-tal bugfix-bar main 1.2 main servidor 1.2 feature-x bugfix-y MANTENEDOR JOÃO JOSÉ bugfix bar
  • COMANDOS BÁSICOS DE VCS
  • COMANDOS BÁSICOS DE VCS
    • CHECKOUT
  • CHECKOUT REPOSITÓRIO WORKING COPY SERVIDOR REVISÃO 123 PEER CHECKOUT
  • COMANDOS BÁSICOS DE VCS
    • checkout (co) ‏
    • commit (cm) ‏
  • COMMIT REPOSITÓRIO WORKING COPY SERVIDOR REVISÃO 124 PEER COMMIT
  • COMANDOS BÁSICOS DE VCS
    • checkout (co) ‏
    • commit (cm) ‏
    • import
  • IMPORT REPOSITÓRIO PROJETO SEM VCS SERVIDOR REVISÂO 1 PEER
  • COMANDOS BÁSICOS DE VCS
    • checkout (co) ‏
    • commit (cm) ‏
    • import
    • export
  • EXPORT REPOSITÓRIO PASTA SEM 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:
      • yogarine@gmail.com (e-mail / Google Talk) ‏
      • yogarine@msn.com (Windows Live Messenger) ‏
      • http://www.yogarine.net
      • http://twitter.com/yogarine