Controlando Projetos com Netbeans e Subversion
Curriculum Formado em Tecnologia da Informática – Fatec jahu Cursando Pós em Gerenciamento de Projetos – Senac Bauru 5 anos de experiência em PHP Desenvolvedor PHP na Editora Alto Astral há 2 anos Leandro Augusto Kitamura (lekitamura@gmail.com)
Agenda Visão geral dos Softwares Utilizados Por que versionar? O Subversion Instalação Conceitos Uso básico Branching, tagging and merging Padrões de Utilização Clients Dúvidas
Softwares utilizados Ubuntu 9.04 Subversion 1.5.4 Apache 2.2 Netbeans 6.7.1 + Plugin para PHP 1.6.2 VirtualBox 2.1.4
Por que versionar? Não versionar está na lista dos 40 sinais que dizem se você é um péssimo programador PHP  (Fonte: http://soft.belhard.com/wordpress/?p=27); Possibilitar rápidos downgrades de sistemas; Responder questões que estão no coração de um sistema de versionamento como: O que o arquivo continha na quarta-feira passada? Quem foi o último desenvolvedor a alterar o arquivo? O que ele fez?
Subversion Subversion é um sistema de controle de versões.  Ele gerencia arquivos, diretórios e as alterações realizadas nos mesmos.
Subversion Fonte: http://subversion.tigris.org/svn-dav-securityspace-survey.html
Subversion Projetos Open Source que usam o Subversion: PHP ASF: The Apache Software Foundation; KDE: The K Desktop Environment; GNOME: The GNOME Project; GCC: The GNU Compiler Collection; Python: The Python programming language; Samba: SMB services for *nix systems; Mono: an open-source implementation of C#/.NET; PuTTY: Win32 SSH/Telnet implementation; Fonte: http://subversion.tigris.org/testimonials.html#open-source-projects-using-svn
Subversion - Instalação sudo apt-get install apache2 subversion libapache2-svn sudo gedit /etc/apache2/mods-available/dav_svn.conf ... SVNParentPath /var/svn/repository #SVNPath /var/svn/repository ..... AuthType Basic AuthName "Subversion Repository" AuthUserFile /etc/apache2/dav_svn.passwd Require valid-user ... htpasswd2 -c /etc/apache2/dav_svn.passwd tester sudo /etc/init.d/apache2 restart
Subversion - Conceitos Modelo   Típico Fonte: http://svnbook.red-bean.com/en/1.1/svn-book.pdf
Subversion - Conceitos Problemas deste modelo Fonte: http://svnbook.red-bean.com/en/1.1/svn-book.pdf
Subversion - Conceitos Solução Lock – Modify - Unlock Fonte: http://svnbook.red-bean.com/en/1.1/svn-book.pdf
Subversion - Conceitos Solução Copy – Modify - Merge Fonte: http://svnbook.red-bean.com/en/1.1/svn-book.pdf
Subversion - Conceitos Solução Copy – Modify - Merge Fonte: http://svnbook.red-bean.com/en/1.1/svn-book.pdf
Subversion - Conceitos Subversion URLs
Subversion - Conceitos Criando uma cópia de trabalho Enviando uma alteração Working Copies
Subversion - Conceitos svn update:  Atualiza a cópia de trabalho Revisões
Subversion - Conceitos Informações gravadas para cada pasta (.svn) Em qual revisão a cópia é baseada; Timestamp gravado na última atualização com o repositório; Estados Não modificado e corrente; Localmente modificado e corrente; Não modificado e out-of-date; Localmente modificado e out-of-date; Comando que exibe o estado: svn status Estados da Cópia de Trabalho
Subversion - Conceitos svn import svn checkout Enviando e obtendo dados do repositório
Subversion - Conceitos Layout recomendado para o repositório
Subversion -  Uso Básico Criar repositório •  svnadmin create /var/svn/airalliance •  chown -R www-data:www-data /var/svn/airalliance •  chmod -R 770 /var/svn/airalliance •  svn mkdir -m 'Estrutura Inicial' http://localhost/svn/airalliance/trunk •  svn mkdir -m 'Estrutura Inicial' http://localhost/svn/airalliance/branches •  svn mkdir -m 'Estrutura Inicial' http://localhost/svn/airalliance/tags Enviando dados para o repositório •  svn import -m 'Import Inicial' http://localhost/svn/airalliance/trunk Ciclo básico de trabalho
Subversion -  Uso Básico Ciclo básico de trabalho Criar uma cópia de trabalho svn checkout  http://localhost / svn / airalliance / trunk  /var/www/airalliance Submeter alterações •  svn commit Atualizar sua cópia de trabalho •  svn update Fazer alterações •  svn add, svn delete, svn copy, svn move Examinar mudanças •  svn status, svn diff Possivelmente desfazer algumas mudanças •  svn revert Resolver conflitos •  svn update, svn resolved
Branching, tagging and merging O que é um Branch? Fonte: http://svnbook.red-bean.com/en/1.1/svn-book.pdf
Branching, tagging and merging Usando Branches
Branching, tagging and merging Alternando: svn switch Trabalhando com branch Fonte: http://svnbook.red-bean.com/en/1.1/svn-book.pdf
Branching, tagging and merging Merging a Branch
Branching, tagging and merging Release Branches Desenvolvedores submetem todo novo trabalho para o trunk. Correções, novas features; Quando a equipe acha que software está pronto para o primeiro release (1.0 release) o trunk é copiado para um “release” branch (branches/1.0); Uma equipe inicia os testes no branch enquanto outra continua o trabalho no trunk (para a versão 2.0) enquanto outra testa o branch, se um bug é encontrado ele é corrigido em ambos; Quando os testes terminam o branch é copiado para tag/1.0.0 e disponibilizado para os clientes; O branch é mantido, o trabalho no trunk continua e bugs encontrados vão sendo corrigidos e a correção é replicada para o branch, quando o número de correções é significativo é gerada a release tag/1.0.1 e disponibilizada para os clientes; Common Branching Patterns
Branching, tagging and merging Feature branches Todo o trabalho é realizado no trunk; Um branch é criado para modificações complexas; Quando o trabalho termina ele é reintegrado ao trunk e deletado. Common Branching Patterns
Clients svn (linha de comando) Clients integradas com IDE Tortoise SVN Outros:  http://en.wikipedia.org/wiki/Comparison_of_Subversion_clients
Dúvidas [email_address] http://svnbook.red-bean.com/en/1.1/svn-book.pdf

Controlando Projetos com Netbeans e Subversion

  • 1.
    Controlando Projetos comNetbeans e Subversion
  • 2.
    Curriculum Formado emTecnologia da Informática – Fatec jahu Cursando Pós em Gerenciamento de Projetos – Senac Bauru 5 anos de experiência em PHP Desenvolvedor PHP na Editora Alto Astral há 2 anos Leandro Augusto Kitamura (lekitamura@gmail.com)
  • 3.
    Agenda Visão geraldos Softwares Utilizados Por que versionar? O Subversion Instalação Conceitos Uso básico Branching, tagging and merging Padrões de Utilização Clients Dúvidas
  • 4.
    Softwares utilizados Ubuntu9.04 Subversion 1.5.4 Apache 2.2 Netbeans 6.7.1 + Plugin para PHP 1.6.2 VirtualBox 2.1.4
  • 5.
    Por que versionar?Não versionar está na lista dos 40 sinais que dizem se você é um péssimo programador PHP (Fonte: http://soft.belhard.com/wordpress/?p=27); Possibilitar rápidos downgrades de sistemas; Responder questões que estão no coração de um sistema de versionamento como: O que o arquivo continha na quarta-feira passada? Quem foi o último desenvolvedor a alterar o arquivo? O que ele fez?
  • 6.
    Subversion Subversion éum sistema de controle de versões. Ele gerencia arquivos, diretórios e as alterações realizadas nos mesmos.
  • 7.
  • 8.
    Subversion Projetos OpenSource que usam o Subversion: PHP ASF: The Apache Software Foundation; KDE: The K Desktop Environment; GNOME: The GNOME Project; GCC: The GNU Compiler Collection; Python: The Python programming language; Samba: SMB services for *nix systems; Mono: an open-source implementation of C#/.NET; PuTTY: Win32 SSH/Telnet implementation; Fonte: http://subversion.tigris.org/testimonials.html#open-source-projects-using-svn
  • 9.
    Subversion - Instalaçãosudo apt-get install apache2 subversion libapache2-svn sudo gedit /etc/apache2/mods-available/dav_svn.conf ... SVNParentPath /var/svn/repository #SVNPath /var/svn/repository ..... AuthType Basic AuthName "Subversion Repository" AuthUserFile /etc/apache2/dav_svn.passwd Require valid-user ... htpasswd2 -c /etc/apache2/dav_svn.passwd tester sudo /etc/init.d/apache2 restart
  • 10.
    Subversion - ConceitosModelo Típico Fonte: http://svnbook.red-bean.com/en/1.1/svn-book.pdf
  • 11.
    Subversion - ConceitosProblemas deste modelo Fonte: http://svnbook.red-bean.com/en/1.1/svn-book.pdf
  • 12.
    Subversion - ConceitosSolução Lock – Modify - Unlock Fonte: http://svnbook.red-bean.com/en/1.1/svn-book.pdf
  • 13.
    Subversion - ConceitosSolução Copy – Modify - Merge Fonte: http://svnbook.red-bean.com/en/1.1/svn-book.pdf
  • 14.
    Subversion - ConceitosSolução Copy – Modify - Merge Fonte: http://svnbook.red-bean.com/en/1.1/svn-book.pdf
  • 15.
    Subversion - ConceitosSubversion URLs
  • 16.
    Subversion - ConceitosCriando uma cópia de trabalho Enviando uma alteração Working Copies
  • 17.
    Subversion - Conceitossvn update: Atualiza a cópia de trabalho Revisões
  • 18.
    Subversion - ConceitosInformações gravadas para cada pasta (.svn) Em qual revisão a cópia é baseada; Timestamp gravado na última atualização com o repositório; Estados Não modificado e corrente; Localmente modificado e corrente; Não modificado e out-of-date; Localmente modificado e out-of-date; Comando que exibe o estado: svn status Estados da Cópia de Trabalho
  • 19.
    Subversion - Conceitossvn import svn checkout Enviando e obtendo dados do repositório
  • 20.
    Subversion - ConceitosLayout recomendado para o repositório
  • 21.
    Subversion - Uso Básico Criar repositório • svnadmin create /var/svn/airalliance • chown -R www-data:www-data /var/svn/airalliance • chmod -R 770 /var/svn/airalliance • svn mkdir -m 'Estrutura Inicial' http://localhost/svn/airalliance/trunk • svn mkdir -m 'Estrutura Inicial' http://localhost/svn/airalliance/branches • svn mkdir -m 'Estrutura Inicial' http://localhost/svn/airalliance/tags Enviando dados para o repositório • svn import -m 'Import Inicial' http://localhost/svn/airalliance/trunk Ciclo básico de trabalho
  • 22.
    Subversion - Uso Básico Ciclo básico de trabalho Criar uma cópia de trabalho svn checkout http://localhost / svn / airalliance / trunk /var/www/airalliance Submeter alterações • svn commit Atualizar sua cópia de trabalho • svn update Fazer alterações • svn add, svn delete, svn copy, svn move Examinar mudanças • svn status, svn diff Possivelmente desfazer algumas mudanças • svn revert Resolver conflitos • svn update, svn resolved
  • 23.
    Branching, tagging andmerging O que é um Branch? Fonte: http://svnbook.red-bean.com/en/1.1/svn-book.pdf
  • 24.
    Branching, tagging andmerging Usando Branches
  • 25.
    Branching, tagging andmerging Alternando: svn switch Trabalhando com branch Fonte: http://svnbook.red-bean.com/en/1.1/svn-book.pdf
  • 26.
    Branching, tagging andmerging Merging a Branch
  • 27.
    Branching, tagging andmerging Release Branches Desenvolvedores submetem todo novo trabalho para o trunk. Correções, novas features; Quando a equipe acha que software está pronto para o primeiro release (1.0 release) o trunk é copiado para um “release” branch (branches/1.0); Uma equipe inicia os testes no branch enquanto outra continua o trabalho no trunk (para a versão 2.0) enquanto outra testa o branch, se um bug é encontrado ele é corrigido em ambos; Quando os testes terminam o branch é copiado para tag/1.0.0 e disponibilizado para os clientes; O branch é mantido, o trabalho no trunk continua e bugs encontrados vão sendo corrigidos e a correção é replicada para o branch, quando o número de correções é significativo é gerada a release tag/1.0.1 e disponibilizada para os clientes; Common Branching Patterns
  • 28.
    Branching, tagging andmerging Feature branches Todo o trabalho é realizado no trunk; Um branch é criado para modificações complexas; Quando o trabalho termina ele é reintegrado ao trunk e deletado. Common Branching Patterns
  • 29.
    Clients svn (linhade comando) Clients integradas com IDE Tortoise SVN Outros: http://en.wikipedia.org/wiki/Comparison_of_Subversion_clients
  • 30.