Upload
fernando-solorio
View
213
Download
1
Embed Size (px)
Citation preview
XI Jornada de Informática
Controlando Projetos com Netbeans e Subversion
XI Jornada de Informática
Curriculum
• Formado em Tecnologia da Informática – Fatec jahu• Pós graduado em Gerenciamento de Projetos – Senac Bauru• 6 anos de experiência em PHP• Analista de Sistemas na Editora Alto Astral há 3 anos
Leandro Augusto Kitamura ([email protected])
XI Jornada de Informática
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
XI Jornada de Informática
Softwares utilizados
• Ubuntu 9.04• Subversion 1.5.4• Apache 2.2• Netbeans 6.9.1 + Plugin para PHP 1.13.2• VirtualBox 2.1.4
XI Jornada de Informática
Por que versionar?• Não versionar está na lista dos 40 itens que dizem se você é
um programador PHP fracassado;• 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?
XI Jornada de Informática
Subversion
• Subversion é um sistema de controle de versões. • Ele gerencia arquivos, diretórios e as alterações realizadas
nos mesmos.
XI Jornada de Informática
Subversion
Fonte: http://subversion.tigris.org/svn-dav-securityspace-survey.html
XI Jornada de Informática
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
XI Jornada de Informática
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
...
• htpasswd -c /etc/apache2/dav_svn.passwd tester• sudo /etc/init.d/apache2 restart
XI Jornada de Informática
Subversion - Conceitos
Modelo Típico
Fonte: http://svnbook.red-bean.com/en/1.1/svn-book.pdf
XI Jornada de Informática
Subversion - Conceitos
Problemas deste modelo
Fonte: http://svnbook.red-bean.com/en/1.1/svn-book.pdf
XI Jornada de Informática
Subversion - Conceitos
Solução Lock – Modify - Unlock
Fonte: http://svnbook.red-bean.com/en/1.1/svn-book.pdf
XI Jornada de Informática
Subversion - Conceitos
Solução Copy – Modify - Merge
Fonte: http://svnbook.red-bean.com/en/1.1/svn-book.pdf
XI Jornada de Informática
Subversion - Conceitos
Solução Copy – Modify - Merge
Fonte: http://svnbook.red-bean.com/en/1.1/svn-book.pdf
XI Jornada de Informática
Subversion - Conceitos
Subversion URLs
XI Jornada de Informática
Subversion - Conceitos
Criando uma cópia de trabalho
Enviando uma alteração
Working Copies
XI Jornada de Informática
Subversion - Conceitos
svn update: Atualiza a cópia de trabalho
Revisões
XI Jornada de Informática
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
XI Jornada de Informática
Subversion - Uso Básico
• svn import
• svn checkout
Enviando e obtendo dados do repositório
XI Jornada de Informática
Layout recomendado para o repositório
Subversion - Uso Básico
XI Jornada de Informática
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
XI Jornada de Informática
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
XI Jornada de Informática
Branching, tagging and merging
O que é um Branch?
Fonte: http://svnbook.red-bean.com/en/1.1/svn-book.pdf
XI Jornada de Informática
Branching, tagging and merging
Usando Branches
XI Jornada de Informática
Branching, tagging and merging
Alternando: svn switch
Trabalhando com branch
Fonte: http://svnbook.red-bean.com/en/1.1/svn-book.pdf
XI Jornada de Informática
Branching, tagging and merging
Merging a Branch
XI Jornada de Informática
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
XI Jornada de Informática
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
XI Jornada de Informática
Clients
• svn (linha de comando)
• Clients integradas com IDE
• Tortoise SVN
• Outros: http://en.wikipedia.org/wiki/Comparison_of_Subversion_clients
XI Jornada de Informática
Dúvidas
http://svnbook.red-bean.com/en/1.1/svn-book.pdf
http://www.slideshare.net/lekitamura/controlando-projetos-com-netbeans-e-subversion