Subvertendo o Código PHP com SVN
                       Ricardo Coelho
Quem sou eu?

●
    Ricardo Coelho é fundador e coordenador do
    PHP-Maranhão
●
    Representante do estado no
    PHP Brasil Comunidades
●
    Auditor NBR ISO 27001:2006
●
    Perito Forense Digital
●
    CTO da Nexy
Porque Subversion?
●
    E o CVS?
    ●
        Faltam: commit atômico, rename, move,
        copy, permissões de repositório
●
    E o VSS?
    ●
        Sem commit atômico, sem rename, sem
        move, sem copy, sem permissões de
        repositório, código proprietário, limitado a
        plataforma Windows, só
        funciona em repositórios
        pequenos, documentação
        escassa
Quem migrou do CVS?
●
    Apache Software Foundation
●
    Debian
●
    Zope
●
    KDE
●
    Mono
●
    (…) todo mundo está migrando!
Integração Contínua
●
    Testes unitários executados a cada commit
●
    É possível saber quem quebrou, onde, como e
    quando e isso tudo na hora em que acontece
●
    phpUnderControl
Componentes

●
    svn: Ferramenta cliente
    ●
        Update, Checkout, Commit, Import, Export
●
    svnadmin: Ferramenta do repositório
    ●
        Create
●
    svnserve: Servidor dedicado TCP/IP
●
    svnlook: Ferramenta para inspeção
●
    DAV: Módulo servidor TCP/IP do Apache
Arquitetura

        svn
                      Serviços para                  Biblioteca de
  (cliente texto)
                     Aplicações Cliente             Gerenciamento
                                                 de cópias de trabalho
Aplicativo Gráfico
                      Acesso ao Repositório

                      DAV      SVN        File



   Esquemas
                                     SSH
      file://
     http://                                             svnserve
                             HTTP
     https://
      svn://                 HTTPS                                        Repositório
   svn+ssh://                                                            BDB ou FSFS
Comandos básicos
●
    svnadmin create
●
    svn import
●
    svn checkout
●
    svn update
●
    svn commit
●
    svn revert
●
    svn export
    ●
        .svn?
●
    svn switch
Concorrência
●
    Acesso simultâneo
●
    Estratégia de locking
●
    Estratégia de merging
●
    Resolução de conflitos
●
    Quem commita primeiro
    vai para casa mais cedo!
●
    E se eu quiser incluir uma funcionalidade nova?
●
    E como ficam as manutenções enquanto isso?
Branches & Tags
●
    Diretórios recomendados
●
    Branching === Copying
●
    O histórico (Citarás o branching!)
●
    svn status
●
    svn diff
●
    svn merge sempre da versão comum
●
    Merging === Diff & Apply
●
    Tag == Branch? WTF?
       –   Mantenha o repositório compilável!
       –   E se eu quiser continuar o trabalho em casa?
Fontes

●
    http://svnbook.red-bean.com
●
    http://subversion.apache.org/
●
    http://www.pronus.eng.br/artigos_tutoriais/ger
    encia_configuracao/subversion.php
●
    http://subversion.apache.org/docs/community-
    guide/
Contatos

●
    Email: ricardo@nexy.com.br
●
    Twitter: @ramcoelho
●
    Skype: ram.coelho
●
    www.nexy.com.br
Obrigado!

Subvertendo o código PHP com SVN

  • 1.
    Subvertendo o CódigoPHP com SVN Ricardo Coelho
  • 2.
    Quem sou eu? ● Ricardo Coelho é fundador e coordenador do PHP-Maranhão ● Representante do estado no PHP Brasil Comunidades ● Auditor NBR ISO 27001:2006 ● Perito Forense Digital ● CTO da Nexy
  • 3.
    Porque Subversion? ● E o CVS? ● Faltam: commit atômico, rename, move, copy, permissões de repositório ● E o VSS? ● Sem commit atômico, sem rename, sem move, sem copy, sem permissões de repositório, código proprietário, limitado a plataforma Windows, só funciona em repositórios pequenos, documentação escassa
  • 4.
    Quem migrou doCVS? ● Apache Software Foundation ● Debian ● Zope ● KDE ● Mono ● (…) todo mundo está migrando!
  • 5.
    Integração Contínua ● Testes unitários executados a cada commit ● É possível saber quem quebrou, onde, como e quando e isso tudo na hora em que acontece ● phpUnderControl
  • 6.
    Componentes ● svn: Ferramenta cliente ● Update, Checkout, Commit, Import, Export ● svnadmin: Ferramenta do repositório ● Create ● svnserve: Servidor dedicado TCP/IP ● svnlook: Ferramenta para inspeção ● DAV: Módulo servidor TCP/IP do Apache
  • 7.
    Arquitetura svn Serviços para Biblioteca de (cliente texto) Aplicações Cliente Gerenciamento de cópias de trabalho Aplicativo Gráfico Acesso ao Repositório DAV SVN File Esquemas SSH file:// http:// svnserve HTTP https:// svn:// HTTPS Repositório svn+ssh:// BDB ou FSFS
  • 8.
    Comandos básicos ● svnadmin create ● svn import ● svn checkout ● svn update ● svn commit ● svn revert ● svn export ● .svn? ● svn switch
  • 9.
    Concorrência ● Acesso simultâneo ● Estratégia de locking ● Estratégia de merging ● Resolução de conflitos ● Quem commita primeiro vai para casa mais cedo! ● E se eu quiser incluir uma funcionalidade nova? ● E como ficam as manutenções enquanto isso?
  • 10.
    Branches & Tags ● Diretórios recomendados ● Branching === Copying ● O histórico (Citarás o branching!) ● svn status ● svn diff ● svn merge sempre da versão comum ● Merging === Diff & Apply ● Tag == Branch? WTF? – Mantenha o repositório compilável! – E se eu quiser continuar o trabalho em casa?
  • 11.
    Fontes ● http://svnbook.red-bean.com ● http://subversion.apache.org/ ● http://www.pronus.eng.br/artigos_tutoriais/ger encia_configuracao/subversion.php ● http://subversion.apache.org/docs/community- guide/
  • 12.
    Contatos ● Email: ricardo@nexy.com.br ● Twitter: @ramcoelho ● Skype: ram.coelho ● www.nexy.com.br
  • 13.