Controle de versões distribuído para projetos de software

Post on 09-Jun-2015

1.976 views 6 download

description

Apresentação utilizada na parte 1 do treinamento "GIT: Controle de versões distribuído para projetos de software"

Transcript of Controle de versões distribuído para projetos de software

GIT: Controle de Versões Distribuído para Projetos

de Software

Gilmar Pupo@gpupo

Parte 1

Sobre @gpupo• Desenvolvedor e consultor em GTI

• Dependente de documentação, bookmarks e anotações

• Doctrine ORM, Symfony framework, Perl, Bash, Linux, jQuery mobile

• Membro e co-fundador do #maisagil

• Empreendedor no @hotellinux

GIT SCM para Projetos de Software. @gpupoGIT SCM para Projetos de Software. @gpupo

www.gilmar.eti.br www.gpupo.com

= livro

Objetivos

• Entender o conceito distribuído• Entender os comandos básicos• Entender branching model

GIT SCM para Projetos de Software. @gpupoGIT SCM para Projetos de Software. @gpupo

Documentação

• Anote• Tweet #maisagil• www.delicious.com/gpupo/git

GIT SCM para Projetos de Software. @gpupoGIT SCM para Projetos de Software. @gpupo

Conceitos

• Transformar ou modernizar?• Estruturas convencionais atendem as

necessidades atuais?• Tecnologia versus Conhecimento• A guerra em fileiras ou em células?• Evolução organizacional

GIT SCM para Projetos de Software. @gpupoGIT SCM para Projetos de Software. @gpupo

Version control systemVCS

• um software para gerenciar diferentes versões de um documento qualquer

• o processo de guardar o histórico de alterações de diferentes arquivos

GIT SCM para Projetos de Software. @gpupoGIT SCM para Projetos de Software. @gpupo

Semelhante a slots em seu video game

Version control systemVCS

• Backup (?!)• Histórico• Trabalho em equipe• Marcação e resgate de versões

estáveis• Ramificações

GIT SCM para Projetos de Software. @gpupoGIT SCM para Projetos de Software. @gpupo

Construção facial

Modelo centralizado

• Repositório fica armazanedo em servidor central

• Desenvolvedores ao fazerem checkout, obtêm uma cópia da última revisão do repositório

• Somente usuários autorizados podem fazer commits (brecha de tempo!)

GIT SCM para Projetos de Software. @gpupoGIT SCM para Projetos de Software. @gpupo

Modelo centralizado

GIT SCM para Projetos de Software. @gpupoGIT SCM para Projetos de Software. @gpupo

Modelo centralizado

GIT SCM para Projetos de Software. @gpupoGIT SCM para Projetos de Software. @gpupo

Modelo distribuído

• Cada projeto é um repositório completo, com histórico total

• Independe de acesso à rede ou um servidor central, Commits podem ser feitos offline a qualquer momento

• Commits podem ser transferidos de um repositório para outro facilmente

GIT SCM para Projetos de Software. @gpupoGIT SCM para Projetos de Software. @gpupo

Modelo distribuído

GIT SCM para Projetos de Software. @gpupoGIT SCM para Projetos de Software. @gpupo

Modelo distribuído

GIT SCM para Projetos de Software. @gpupoGIT SCM para Projetos de Software. @gpupo

Modelo distribuído

GIT SCM para Projetos de Software. @gpupoGIT SCM para Projetos de Software. @gpupo

Modelo distribuído

GIT SCM para Projetos de Software. @gpupoGIT SCM para Projetos de Software. @gpupo

http://t.co/7W3uxWo

• Modelo organizacional • Recursos da rede• Diffs velozes e furiosos• Clone do repositório local

Modelo distribuído

GIT SCM para Projetos de Software. @gpupoGIT SCM para Projetos de Software. @gpupo

Distributed Version Control

Systems

Distributed Version Control

Systems = DVCS

DVCSs

GIT SCM para Projetos de Software. @gpupoGIT SCM para Projetos de Software. @gpupo

• BitKeeper• git• Mercurial• Bazaar• darcs• Monotone

GIT• Open Source (GPL v2)

• Originalmente escrito por Linus Torvalds em 2005

• Mantido por Junio Hamano

• Desenvolvido para manter o Kernel do Linux

• Sistema de controle de versões distribuído

• Foco em rapidez, eficiência e uso em grandes projetos

GIT SCM para Projetos de Software. @gpupoGIT SCM para Projetos de Software. @gpupo

GIT

Linus Torvalds

GIT SCM para Projetos de Software. @gpupoGIT SCM para Projetos de Software. @gpupo

“How many have done a branch and merged it? How many of you enjoyed it?” “When you do a merge, you plan ahead for a week, then set aside a day to do it.”

“Some people have 5, 10, 15 branches”. One branch is experimental. One branch is maintenance, etc.

“CVS — you don’t commit. You make changes without committing. You never commit until it passes a giant test suite. People make 1-liner changes, knowing it can’t possibly break.”

GIT

GIT SCM para Projetos de Software. @gpupoGIT SCM para Projetos de Software. @gpupo

Histórico now!

Why!?

Why!?branches baratos(“ramificações”, "bifurcações", ou "galhos")

GIT SCM para Projetos de Software. @gpupoGIT SCM para Projetos de Software. @gpupo

Branches baratos•

Criar um branch para testar uma idéia, fazer commit algumas vezes, voltar para a partir de onde você fez o branch, aplicar um patch (conjunto de modificações), voltar para onde está experimentando, então fazer merge.

•Ter um branch que sempre contém somente o que vai para produção, outro onde você faz merge do trabalho para testar e várias outras menores para atividades do dia a dia.

•Criar novas branches para cada nova funcionalidade que estiver trabalhando, para que você possa mudar de uma para outra com facilidade, então deletar cada branch quando essa fizer merge dessa funcionalidade na linha principal.

•Criar um branch para experimentar, descobrir que não vai funcionar e somente deletá-la, abandonando o trabalho - sem que ninguém veja isso (mesmo se você tiver trabalhado outras branches no meio do caminho).

GIT SCM para Projetos de Software. @gpupoGIT SCM para Projetos de Software. @gpupo

Why!? Tudo é local• Existe muito

pouco fora de 'fetch', 'pull', 'push' que comunica de alguma maneira com qualquer coisa além do seu disco rígido.

GIT SCM para Projetos de Software. @gpupoGIT SCM para Projetos de Software. @gpupo

Why!? • Veloz• Social• Pequeno

GIT SCM para Projetos de Software. @gpupoGIT SCM para Projetos de Software. @gpupo

Why!?

GIT SCM para Projetos de Software. @gpupoGIT SCM para Projetos de Software. @gpupo

●área intermediária

Area intermediária(staging ou index)

• você pode configurar como você quer que seu commit fique antes de fazê-lo.

• você pode facilmente ir colocando seus arquivos nela à medida que for terminando e então fazer commit deles sem fazer commit de todos os arquivos modificados, ou ter que listá-los na linha de comando durante o commit.

GIT SCM para Projetos de Software. @gpupoGIT SCM para Projetos de Software. @gpupo

Qualquer workflow• Você pode facilmente implementar

praticamente qualquer fluxo de trabalho que puder pensar com facilidade

GIT SCM para Projetos de Software. @gpupoGIT SCM para Projetos de Software. @gpupo

Até mesmo svn style!

Aderência

GIT SCM para Projetos de Software. @gpupoGIT SCM para Projetos de Software. @gpupo

●6 meses de monitoramento●Desafogar a fila●Acompanhamento

?o.O

Projetos utilizando GIT

GIT SCM para Projetos de Software. @gpupoGIT SCM para Projetos de Software. @gpupo

http://en.wikipedia.org/wiki/Git_(software)

AmarokAndroidCakePHPcURLDebianDiggEclipseFedoraGIMPGNOMEGTK+jQuery

Linux kernelLinux MintMaemoMeeGoMonoMooToolsOne Laptop Per Child (OLPC)PerlphpBBPrototype.js

QtRsyncRuby on RailsSambaStarlinkSugarXfceYahoo! UI LibraryZend FrameworkSymfony Framework

Resources

GIT SCM para Projetos de Software. @gpupoGIT SCM para Projetos de Software. @gpupo

git.or.czgitcasts.comdel.icio.us/popular/git#git / #github

Perguntas?

GIT SCM para Projetos de Software. @gpupoGIT SCM para Projetos de Software. @gpupo

Parte 2 : Mão na massa....

Vai!

GIT SCM para Projetos de Software. @gpupoGIT SCM para Projetos de Software. @gpupo