30
PHP Conference 2009 Controlando Projetos com Netbeans e Subversion

Controlando Projetos com Netbeans e Subversion

Embed Size (px)

DESCRIPTION

Apresentação utilizada na PHP Conference 2009

Citation preview

Page 1: Controlando Projetos com Netbeans e Subversion

PHP Conference 2009

Controlando Projetos com Netbeans e Subversion

Page 2: 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])

Page 3: Controlando Projetos com Netbeans e Subversion

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

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

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

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

PHP Conference 2009

Subversion

Fonte: http://subversion.tigris.org/svn-dav-securityspace-survey.html

Page 8: Controlando Projetos com Netbeans e Subversion

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

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

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

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

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

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

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

PHP Conference 2009

Subversion - Conceitos

Subversion URLs

Page 16: Controlando Projetos com Netbeans e Subversion

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

PHP Conference 2009

Subversion - Conceitos

svn update: Atualiza a cópia de trabalho

Revisões

Page 18: Controlando Projetos com Netbeans e Subversion

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

PHP Conference 2009

Subversion - Conceitos

• svn import

• svn checkout

Enviando e obtendo dados do repositório

Page 20: Controlando Projetos com Netbeans e Subversion

PHP Conference 2009

Layout recomendado para o repositório

Subversion - Conceitos

Page 21: Controlando Projetos com Netbeans e Subversion

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

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

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

PHP Conference 2009

Branching, tagging and merging

Usando Branches

Page 25: Controlando Projetos com Netbeans e Subversion

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

PHP Conference 2009

Branching, tagging and merging

Merging a Branch

Page 27: Controlando Projetos com Netbeans e Subversion

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

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

PHP Conference 2009

Clients

• svn (linha de comando)

• Clients integradas com IDE

• Tortoise SVN

• Outros: http://en.wikipedia.org/wiki/Comparison_of_Subversion_clients

Page 30: Controlando Projetos com Netbeans e Subversion

PHP Conference 2009

Dúvidas

[email protected]

http://svnbook.red-bean.com/en/1.1/svn-book.pdf