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
Top Related