Upload
lekitamura
View
11.001
Download
0
Embed Size (px)
DESCRIPTION
Apresentação utilizada na PHP Conference 2009
Citation preview
PHP Conference 2009
Controlando Projetos com Netbeans e Subversion
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])
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
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
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?
PHP Conference 2009
Subversion
• Subversion é um sistema de controle de versões.
• Ele gerencia arquivos, diretórios e as alterações realizadas nos mesmos.
PHP Conference 2009
Subversion
Fonte: http://subversion.tigris.org/svn-dav-securityspace-survey.html
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
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
PHP Conference 2009
Subversion - Conceitos
Modelo Típico
Fonte: http://svnbook.red-bean.com/en/1.1/svn-book.pdf
PHP Conference 2009
Subversion - Conceitos
Problemas deste modelo
Fonte: http://svnbook.red-bean.com/en/1.1/svn-book.pdf
PHP Conference 2009
Subversion - Conceitos
Solução Lock – Modify - Unlock
Fonte: http://svnbook.red-bean.com/en/1.1/svn-book.pdf
PHP Conference 2009
Subversion - Conceitos
Solução Copy – Modify - Merge
Fonte: http://svnbook.red-bean.com/en/1.1/svn-book.pdf
PHP Conference 2009
Subversion - Conceitos
Solução Copy – Modify - Merge
Fonte: http://svnbook.red-bean.com/en/1.1/svn-book.pdf
PHP Conference 2009
Subversion - Conceitos
Subversion URLs
PHP Conference 2009
Subversion - Conceitos
Criando uma cópia de trabalho
Enviando uma alteração
Working Copies
PHP Conference 2009
Subversion - Conceitos
svn update: Atualiza a cópia de trabalho
Revisões
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
PHP Conference 2009
Subversion - Conceitos
• svn import
• svn checkout
Enviando e obtendo dados do repositório
PHP Conference 2009
Layout recomendado para o repositório
Subversion - Conceitos
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
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
PHP Conference 2009
Branching, tagging and merging
O que é um Branch?
Fonte: http://svnbook.red-bean.com/en/1.1/svn-book.pdf
PHP Conference 2009
Branching, tagging and merging
Usando Branches
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
PHP Conference 2009
Branching, tagging and merging
Merging a Branch
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
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
PHP Conference 2009
Clients
• svn (linha de comando)
• Clients integradas com IDE
• Tortoise SVN
• Outros: http://en.wikipedia.org/wiki/Comparison_of_Subversion_clients