Controlando Projetos com Netbeans e Subversion
Curriculum <ul><li>Formado em Tecnologia da Informática – Fatec jahu </li></ul><ul><li>Cursando Pós em Gerenciamento de Pr...
Agenda <ul><li>Visão geral dos Softwares Utilizados </li></ul><ul><li>Por que versionar? </li></ul><ul><li>O Subversion </...
Softwares utilizados <ul><li>Ubuntu 9.04 </li></ul><ul><li>Subversion 1.5.4 </li></ul><ul><li>Apache 2.2 </li></ul><ul><li...
Por que versionar? <ul><li>Não versionar está na lista dos 40 sinais que dizem se você é um péssimo programador PHP  (Font...
Subversion <ul><li>Subversion é um sistema de controle de versões.  </li></ul><ul><li>Ele gerencia arquivos, diretórios e ...
Subversion Fonte: http://subversion.tigris.org/svn-dav-securityspace-survey.html
Subversion <ul><li>Projetos Open Source que usam o Subversion: </li></ul><ul><ul><li>PHP </li></ul></ul><ul><ul><li>ASF: T...
Subversion - Instalação <ul><li>sudo apt-get install apache2 subversion libapache2-svn </li></ul><ul><li>sudo gedit /etc/a...
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 <ul><li>Informações gravadas para cada pasta (.svn) </li></ul><ul><ul><li>Em qual revisão a cópia é...
Subversion - Conceitos <ul><li>svn import </li></ul><ul><li>svn checkout </li></ul>Enviando e obtendo dados do repositório
Subversion - Conceitos Layout recomendado para o repositório
Subversion -  Uso Básico <ul><li>Criar repositório </li></ul><ul><li>•  svnadmin create /var/svn/airalliance </li></ul><ul...
Subversion -  Uso Básico <ul><li>Ciclo básico de trabalho </li></ul>Criar uma cópia de trabalho svn checkout  http://local...
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...
Branching, tagging and merging Merging a Branch
Branching, tagging and merging <ul><li>Release Branches </li></ul><ul><ul><li>Desenvolvedores submetem todo novo trabalho ...
Branching, tagging and merging <ul><li>Feature branches </li></ul><ul><ul><li>Todo o trabalho é realizado no trunk; </li><...
Clients <ul><li>svn (linha de comando) </li></ul><ul><li>Clients integradas com IDE </li></ul><ul><li>Tortoise SVN </li></...
Dúvidas <ul><li>[email_address] </li></ul>http://svnbook.red-bean.com/en/1.1/svn-book.pdf
Upcoming SlideShare
Loading in …5
×

Controlando Projetos com Netbeans e Subversion

12,252 views

Published on

Apresentação utilizada na PHP Conference 2009

Published in: Technology
1 Comment
4 Likes
Statistics
Notes
No Downloads
Views
Total views
12,252
On SlideShare
0
From Embeds
0
Number of Embeds
63
Actions
Shares
0
Downloads
177
Comments
1
Likes
4
Embeds 0
No embeds

No notes for slide

Controlando Projetos com Netbeans e Subversion

  1. 1. Controlando Projetos com Netbeans e Subversion
  2. 2. Curriculum <ul><li>Formado em Tecnologia da Informática – Fatec jahu </li></ul><ul><li>Cursando Pós em Gerenciamento de Projetos – Senac Bauru </li></ul><ul><li>5 anos de experiência em PHP </li></ul><ul><li>Desenvolvedor PHP na Editora Alto Astral há 2 anos </li></ul>Leandro Augusto Kitamura (lekitamura@gmail.com)
  3. 3. Agenda <ul><li>Visão geral dos Softwares Utilizados </li></ul><ul><li>Por que versionar? </li></ul><ul><li>O Subversion </li></ul><ul><ul><li>Instalação </li></ul></ul><ul><ul><li>Conceitos </li></ul></ul><ul><ul><li>Uso básico </li></ul></ul><ul><li>Branching, tagging and merging </li></ul><ul><li>Padrões de Utilização </li></ul><ul><li>Clients </li></ul><ul><li>Dúvidas </li></ul>
  4. 4. Softwares utilizados <ul><li>Ubuntu 9.04 </li></ul><ul><li>Subversion 1.5.4 </li></ul><ul><li>Apache 2.2 </li></ul><ul><li>Netbeans 6.7.1 + Plugin para PHP 1.6.2 </li></ul><ul><li>VirtualBox 2.1.4 </li></ul>
  5. 5. Por que versionar? <ul><li>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); </li></ul><ul><li>Possibilitar rápidos downgrades de sistemas; </li></ul><ul><li>Responder questões que estão no coração de um sistema de versionamento como: </li></ul><ul><ul><li>O que o arquivo continha na quarta-feira passada? </li></ul></ul><ul><ul><li>Quem foi o último desenvolvedor a alterar o arquivo? </li></ul></ul><ul><ul><li>O que ele fez? </li></ul></ul>
  6. 6. Subversion <ul><li>Subversion é um sistema de controle de versões. </li></ul><ul><li>Ele gerencia arquivos, diretórios e as alterações realizadas nos mesmos. </li></ul>
  7. 7. Subversion Fonte: http://subversion.tigris.org/svn-dav-securityspace-survey.html
  8. 8. Subversion <ul><li>Projetos Open Source que usam o Subversion: </li></ul><ul><ul><li>PHP </li></ul></ul><ul><ul><li>ASF: The Apache Software Foundation; </li></ul></ul><ul><ul><li>KDE: The K Desktop Environment; </li></ul></ul><ul><ul><li>GNOME: The GNOME Project; </li></ul></ul><ul><ul><li>GCC: The GNU Compiler Collection; </li></ul></ul><ul><ul><li>Python: The Python programming language; </li></ul></ul><ul><ul><li>Samba: SMB services for *nix systems; </li></ul></ul><ul><ul><li>Mono: an open-source implementation of C#/.NET; </li></ul></ul><ul><ul><li>PuTTY: Win32 SSH/Telnet implementation; </li></ul></ul>Fonte: http://subversion.tigris.org/testimonials.html#open-source-projects-using-svn
  9. 9. Subversion - Instalação <ul><li>sudo apt-get install apache2 subversion libapache2-svn </li></ul><ul><li>sudo gedit /etc/apache2/mods-available/dav_svn.conf </li></ul><ul><ul><li>... </li></ul></ul><ul><ul><li>SVNParentPath /var/svn/repository </li></ul></ul><ul><ul><li>#SVNPath /var/svn/repository </li></ul></ul><ul><ul><li>..... </li></ul></ul><ul><ul><li>AuthType Basic </li></ul></ul><ul><ul><li>AuthName &quot;Subversion Repository&quot; </li></ul></ul><ul><ul><li>AuthUserFile /etc/apache2/dav_svn.passwd </li></ul></ul><ul><ul><li>Require valid-user </li></ul></ul><ul><ul><li>... </li></ul></ul><ul><li>htpasswd2 -c /etc/apache2/dav_svn.passwd tester </li></ul><ul><li>sudo /etc/init.d/apache2 restart </li></ul>
  10. 10. Subversion - Conceitos Modelo Típico Fonte: http://svnbook.red-bean.com/en/1.1/svn-book.pdf
  11. 11. Subversion - Conceitos Problemas deste modelo Fonte: http://svnbook.red-bean.com/en/1.1/svn-book.pdf
  12. 12. Subversion - Conceitos Solução Lock – Modify - Unlock Fonte: http://svnbook.red-bean.com/en/1.1/svn-book.pdf
  13. 13. Subversion - Conceitos Solução Copy – Modify - Merge Fonte: http://svnbook.red-bean.com/en/1.1/svn-book.pdf
  14. 14. Subversion - Conceitos Solução Copy – Modify - Merge Fonte: http://svnbook.red-bean.com/en/1.1/svn-book.pdf
  15. 15. Subversion - Conceitos Subversion URLs
  16. 16. Subversion - Conceitos Criando uma cópia de trabalho Enviando uma alteração Working Copies
  17. 17. Subversion - Conceitos svn update: Atualiza a cópia de trabalho Revisões
  18. 18. Subversion - Conceitos <ul><li>Informações gravadas para cada pasta (.svn) </li></ul><ul><ul><li>Em qual revisão a cópia é baseada; </li></ul></ul><ul><ul><li>Timestamp gravado na última atualização com o repositório; </li></ul></ul><ul><li>Estados </li></ul><ul><ul><li>Não modificado e corrente; </li></ul></ul><ul><ul><li>Localmente modificado e corrente; </li></ul></ul><ul><ul><li>Não modificado e out-of-date; </li></ul></ul><ul><ul><li>Localmente modificado e out-of-date; </li></ul></ul><ul><li>Comando que exibe o estado: svn status </li></ul>Estados da Cópia de Trabalho
  19. 19. Subversion - Conceitos <ul><li>svn import </li></ul><ul><li>svn checkout </li></ul>Enviando e obtendo dados do repositório
  20. 20. Subversion - Conceitos Layout recomendado para o repositório
  21. 21. Subversion - Uso Básico <ul><li>Criar repositório </li></ul><ul><li>• svnadmin create /var/svn/airalliance </li></ul><ul><li>• chown -R www-data:www-data /var/svn/airalliance </li></ul><ul><li>• chmod -R 770 /var/svn/airalliance </li></ul><ul><li>• svn mkdir -m 'Estrutura Inicial' http://localhost/svn/airalliance/trunk </li></ul><ul><li>• svn mkdir -m 'Estrutura Inicial' http://localhost/svn/airalliance/branches </li></ul><ul><li>• svn mkdir -m 'Estrutura Inicial' http://localhost/svn/airalliance/tags </li></ul><ul><li>Enviando dados para o repositório </li></ul><ul><li>• svn import -m 'Import Inicial' http://localhost/svn/airalliance/trunk </li></ul>Ciclo básico de trabalho
  22. 22. Subversion - Uso Básico <ul><li>Ciclo básico de trabalho </li></ul>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. 23. Branching, tagging and merging O que é um Branch? Fonte: http://svnbook.red-bean.com/en/1.1/svn-book.pdf
  24. 24. Branching, tagging and merging Usando Branches
  25. 25. Branching, tagging and merging Alternando: svn switch Trabalhando com branch Fonte: http://svnbook.red-bean.com/en/1.1/svn-book.pdf
  26. 26. Branching, tagging and merging Merging a Branch
  27. 27. Branching, tagging and merging <ul><li>Release Branches </li></ul><ul><ul><li>Desenvolvedores submetem todo novo trabalho para o trunk. Correções, novas features; </li></ul></ul><ul><ul><li>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); </li></ul></ul><ul><ul><li>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; </li></ul></ul><ul><ul><li>Quando os testes terminam o branch é copiado para tag/1.0.0 e disponibilizado para os clientes; </li></ul></ul><ul><ul><li>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; </li></ul></ul>Common Branching Patterns
  28. 28. Branching, tagging and merging <ul><li>Feature branches </li></ul><ul><ul><li>Todo o trabalho é realizado no trunk; </li></ul></ul><ul><ul><li>Um branch é criado para modificações complexas; </li></ul></ul><ul><ul><li>Quando o trabalho termina ele é reintegrado ao trunk e deletado. </li></ul></ul>Common Branching Patterns
  29. 29. Clients <ul><li>svn (linha de comando) </li></ul><ul><li>Clients integradas com IDE </li></ul><ul><li>Tortoise SVN </li></ul><ul><li>Outros: http://en.wikipedia.org/wiki/Comparison_of_Subversion_clients </li></ul>
  30. 30. Dúvidas <ul><li>[email_address] </li></ul>http://svnbook.red-bean.com/en/1.1/svn-book.pdf

×