controlando projetos com netbeans e subversion
DESCRIPTION
Apresentação utilizada na PHP Conference 2009TRANSCRIPT
![Page 1: Controlando Projetos com Netbeans e Subversion](https://reader033.vdocuments.pub/reader033/viewer/2022061221/54bd895a4a7959d4438b462b/html5/thumbnails/1.jpg)
PHP Conference 2009
Controlando Projetos com Netbeans e Subversion
![Page 2: Controlando Projetos com Netbeans e Subversion](https://reader033.vdocuments.pub/reader033/viewer/2022061221/54bd895a4a7959d4438b462b/html5/thumbnails/2.jpg)
PHP Conference 2009
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 ([email protected])
![Page 3: Controlando Projetos com Netbeans e Subversion](https://reader033.vdocuments.pub/reader033/viewer/2022061221/54bd895a4a7959d4438b462b/html5/thumbnails/3.jpg)
PHP Conference 2009
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
![Page 4: Controlando Projetos com Netbeans e Subversion](https://reader033.vdocuments.pub/reader033/viewer/2022061221/54bd895a4a7959d4438b462b/html5/thumbnails/4.jpg)
PHP Conference 2009
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
![Page 5: Controlando Projetos com Netbeans e Subversion](https://reader033.vdocuments.pub/reader033/viewer/2022061221/54bd895a4a7959d4438b462b/html5/thumbnails/5.jpg)
PHP Conference 2009
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?
![Page 6: Controlando Projetos com Netbeans e Subversion](https://reader033.vdocuments.pub/reader033/viewer/2022061221/54bd895a4a7959d4438b462b/html5/thumbnails/6.jpg)
PHP Conference 2009
Subversion
• Subversion é um sistema de controle de versões.
• Ele gerencia arquivos, diretórios e as alterações realizadas nos mesmos.
![Page 7: Controlando Projetos com Netbeans e Subversion](https://reader033.vdocuments.pub/reader033/viewer/2022061221/54bd895a4a7959d4438b462b/html5/thumbnails/7.jpg)
PHP Conference 2009
Subversion
Fonte: http://subversion.tigris.org/svn-dav-securityspace-survey.html
![Page 8: Controlando Projetos com Netbeans e Subversion](https://reader033.vdocuments.pub/reader033/viewer/2022061221/54bd895a4a7959d4438b462b/html5/thumbnails/8.jpg)
PHP Conference 2009
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
![Page 9: Controlando Projetos com Netbeans e Subversion](https://reader033.vdocuments.pub/reader033/viewer/2022061221/54bd895a4a7959d4438b462b/html5/thumbnails/9.jpg)
PHP Conference 2009
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
![Page 10: Controlando Projetos com Netbeans e Subversion](https://reader033.vdocuments.pub/reader033/viewer/2022061221/54bd895a4a7959d4438b462b/html5/thumbnails/10.jpg)
PHP Conference 2009
Subversion - Conceitos
Modelo Típico
Fonte: http://svnbook.red-bean.com/en/1.1/svn-book.pdf
![Page 11: Controlando Projetos com Netbeans e Subversion](https://reader033.vdocuments.pub/reader033/viewer/2022061221/54bd895a4a7959d4438b462b/html5/thumbnails/11.jpg)
PHP Conference 2009
Subversion - Conceitos
Problemas deste modelo
Fonte: http://svnbook.red-bean.com/en/1.1/svn-book.pdf
![Page 12: Controlando Projetos com Netbeans e Subversion](https://reader033.vdocuments.pub/reader033/viewer/2022061221/54bd895a4a7959d4438b462b/html5/thumbnails/12.jpg)
PHP Conference 2009
Subversion - Conceitos
Solução Lock – Modify - Unlock
Fonte: http://svnbook.red-bean.com/en/1.1/svn-book.pdf
![Page 13: Controlando Projetos com Netbeans e Subversion](https://reader033.vdocuments.pub/reader033/viewer/2022061221/54bd895a4a7959d4438b462b/html5/thumbnails/13.jpg)
PHP Conference 2009
Subversion - Conceitos
Solução Copy – Modify - Merge
Fonte: http://svnbook.red-bean.com/en/1.1/svn-book.pdf
![Page 14: Controlando Projetos com Netbeans e Subversion](https://reader033.vdocuments.pub/reader033/viewer/2022061221/54bd895a4a7959d4438b462b/html5/thumbnails/14.jpg)
PHP Conference 2009
Subversion - Conceitos
Solução Copy – Modify - Merge
Fonte: http://svnbook.red-bean.com/en/1.1/svn-book.pdf
![Page 15: Controlando Projetos com Netbeans e Subversion](https://reader033.vdocuments.pub/reader033/viewer/2022061221/54bd895a4a7959d4438b462b/html5/thumbnails/15.jpg)
PHP Conference 2009
Subversion - Conceitos
Subversion URLs
![Page 16: Controlando Projetos com Netbeans e Subversion](https://reader033.vdocuments.pub/reader033/viewer/2022061221/54bd895a4a7959d4438b462b/html5/thumbnails/16.jpg)
PHP Conference 2009
Subversion - Conceitos
Criando uma cópia de trabalho
Enviando uma alteração
Working Copies
![Page 17: Controlando Projetos com Netbeans e Subversion](https://reader033.vdocuments.pub/reader033/viewer/2022061221/54bd895a4a7959d4438b462b/html5/thumbnails/17.jpg)
PHP Conference 2009
Subversion - Conceitos
svn update: Atualiza a cópia de trabalho
Revisões
![Page 18: Controlando Projetos com Netbeans e Subversion](https://reader033.vdocuments.pub/reader033/viewer/2022061221/54bd895a4a7959d4438b462b/html5/thumbnails/18.jpg)
PHP Conference 2009
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
![Page 19: Controlando Projetos com Netbeans e Subversion](https://reader033.vdocuments.pub/reader033/viewer/2022061221/54bd895a4a7959d4438b462b/html5/thumbnails/19.jpg)
PHP Conference 2009
Subversion - Conceitos
• svn import
• svn checkout
Enviando e obtendo dados do repositório
![Page 20: Controlando Projetos com Netbeans e Subversion](https://reader033.vdocuments.pub/reader033/viewer/2022061221/54bd895a4a7959d4438b462b/html5/thumbnails/20.jpg)
PHP Conference 2009
Layout recomendado para o repositório
Subversion - Conceitos
![Page 21: Controlando Projetos com Netbeans e Subversion](https://reader033.vdocuments.pub/reader033/viewer/2022061221/54bd895a4a7959d4438b462b/html5/thumbnails/21.jpg)
PHP Conference 2009
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
![Page 22: Controlando Projetos com Netbeans e Subversion](https://reader033.vdocuments.pub/reader033/viewer/2022061221/54bd895a4a7959d4438b462b/html5/thumbnails/22.jpg)
PHP Conference 2009
Subversion - Uso Básico
Ciclo básico de trabalho
Criar uma cópia de trabalhosvn 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
![Page 23: Controlando Projetos com Netbeans e Subversion](https://reader033.vdocuments.pub/reader033/viewer/2022061221/54bd895a4a7959d4438b462b/html5/thumbnails/23.jpg)
PHP Conference 2009
Branching, tagging and merging
O que é um Branch?
Fonte: http://svnbook.red-bean.com/en/1.1/svn-book.pdf
![Page 24: Controlando Projetos com Netbeans e Subversion](https://reader033.vdocuments.pub/reader033/viewer/2022061221/54bd895a4a7959d4438b462b/html5/thumbnails/24.jpg)
PHP Conference 2009
Branching, tagging and merging
Usando Branches
![Page 25: Controlando Projetos com Netbeans e Subversion](https://reader033.vdocuments.pub/reader033/viewer/2022061221/54bd895a4a7959d4438b462b/html5/thumbnails/25.jpg)
PHP Conference 2009
Branching, tagging and merging
Alternando: svn switch
Trabalhando com branch
Fonte: http://svnbook.red-bean.com/en/1.1/svn-book.pdf
![Page 26: Controlando Projetos com Netbeans e Subversion](https://reader033.vdocuments.pub/reader033/viewer/2022061221/54bd895a4a7959d4438b462b/html5/thumbnails/26.jpg)
PHP Conference 2009
Branching, tagging and merging
Merging a Branch
![Page 27: Controlando Projetos com Netbeans e Subversion](https://reader033.vdocuments.pub/reader033/viewer/2022061221/54bd895a4a7959d4438b462b/html5/thumbnails/27.jpg)
PHP Conference 2009
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
![Page 28: Controlando Projetos com Netbeans e Subversion](https://reader033.vdocuments.pub/reader033/viewer/2022061221/54bd895a4a7959d4438b462b/html5/thumbnails/28.jpg)
PHP Conference 2009
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
![Page 29: Controlando Projetos com Netbeans e Subversion](https://reader033.vdocuments.pub/reader033/viewer/2022061221/54bd895a4a7959d4438b462b/html5/thumbnails/29.jpg)
PHP Conference 2009
Clients
• svn (linha de comando)
• Clients integradas com IDE
• Tortoise SVN
• Outros: http://en.wikipedia.org/wiki/Comparison_of_Subversion_clients