View
482
Download
1
Embed Size (px)
Citation preview
Por Alexandre Rocha Lima e MarcondesPor Alexandre Rocha Lima e Marcondes
Controle de Versão
Usando o GIT
Objetivos da Apresentação
5/15/2012 Alexandre Rocha Lima e Marcondes
O que é Controle de Versão ?
• É um software que permite controlar e guardar diferentes versões de um mesmo arquivo
O que é ?
• Para facilitar o desenvolvimento de software em equipes dispersas
• Para controlar versões do código fonte
Para que usar ?
• Instalar o servidor e os clientes
• Editar localmente os arquivos
• Enviar as alterações para o repositório
Como usar ?
5/15/2012 Alexandre Rocha Lima e Marcondes
O que é um repositório ?
• É como um banco de dados especializado em guardar arquivos e suas diferentes versões
O que é ?
• O GIT cria uma árvore que contem a estrutura dos arquivos e pastas versionados
Como funciona ?
• O GIT é distribuído
• Tem repositórios em todas as máquinas de desenvolvimento e no servidor central
Onde fica ?
5/15/2012 Alexandre Rocha Lima e Marcondes
História
Linus Torvalds (o mesmocriador do Linux)
Criado em3 de Abrilde 2005
O uso do Bitkeeper comoservidor de controle de versões distribuído com licença gratuita para osdesenvolvedores do kernel do Linux foi revogado
Linus Torvalds decidiufazer ele mesmo o dele, pois os outros nãotinham os recursos que elequeria
Motivação
5/15/2012 Alexandre Rocha Lima e Marcondes
2005
Criação
• 3 de Abril
Anúncio
• 6 de Abril
Self-hosting
• 7 de Abril
Merge de múltiplos branches
• 18 de Abril
Alcançou a performance desejada
• 29 de Abril
5/15/2012 Alexandre Rocha Lima e Marcondes
Critérios
Linus Torvals buscou critérios de implementação
Aprender com o CVS e fazersempre o
oposto em casode dúvida
Não seguir a linha do SVN (“CVS done
right”)
Suportar um workflow
distribuídocomo o
Bitkeeper
Não foiprojetado comoum clone, masinspirado no
Bitkeeper
Ter proteçõesfortes contra corrupção de
dados, acidentalou maliciosa
Ter umaperformance
muito alta
5/15/2012 Alexandre Rocha Lima e Marcondes
Instalação
• Windows
– Putty
– MsysGIT
– TortoiseGIT 32 Bits e 64 Bits
• Linux
– $ apt-get install git ssh openssh
5/15/2012 Alexandre Rocha Lima e Marcondes
Os Menus
5/15/2012 Alexandre Rocha Lima e Marcondes
O mesmo que
pull + push
Envia para o repositório
local
Pega do repositório
remoto
Verifica todas alterações
em arquivos
Une duas versões
diferentes
Envia para o repositório
remoto
Lista as alterações
locais
Coloca arquivos no
Index
Cria uma etiqueta de
versão
Troca a árvore usada
Transporte de dados no GIT
5/15/2012 Alexandre Rocha Lima e Marcondes
Conceito
Alterações Index DistribuiçãoRepositório
RemotoRepositório
Local
Edições e gravações diretamente nos arquivosGrave com freqüência, pois a máquina pode dar problemas
Comando:git addMelhoriasem relação àversãoanteriorAdiconecadaalteraçãomais arrojada
Comando: git commitEmpacote cada versão coerenteFaça testes simples para garantir a integridade
Comando: git pushCompartilhe o seu trabalho com a equipe pelo menos uma vez a cada dois dias
Comando: git pushreleaseVersão final que pode ser entregue diretamente ao cliente
add commit pushpush
release
5/15/2012 Alexandre Rocha Lima e Marcondes
Conceito
Alterações Index DistribuiçãoRepositório
RemotoRepositório
Local
add commit pushpush
release
5/15/2012 Alexandre Rocha Lima e Marcondes
Clie
nte
Privad
oD
ese
nvo
lvime
nto
Vo
látil
Pro
du
çãoEstáve
l
Dia-a-dia com o GIT
5/15/2012 Alexandre Rocha Lima e Marcondes
Edição de arquivos e adição no
Index
Envio do Indexpara o
repositório local com o commit
Sincronismo com Synch ou
um pullseguido de um
push
O Index
5/15/2012 Alexandre Rocha Lima e Marcondes
O Index
5/15/2012 Alexandre Rocha Lima e Marcondes
Os arquivos marcados
são adicionados
ao Indexpelo
TortoiseGITquando se
faz um commit
O Repositório Local
5/15/2012 Alexandre Rocha Lima e Marcondes
Comentários em Commits
5/15/2012 Alexandre Rocha Lima e Marcondes
Comentando BUGs
5/15/2012 Alexandre Rocha Lima e Marcondes
BUG-1234 : Correção na comunicação serial
* Limpeza de arquivos e identação melhorada
Comentando Novos Recursos
5/15/2012 Alexandre Rocha Lima e Marcondes
FEATURE-1234 : Comunicação com dispositivo XYZ
* Separação da estrutura de comunicação em funções diferentes* Envio de dados na serial com checksum inteligente* Troca de nome das funções internas
Comentando Código que não Compila
5/15/2012 Alexandre Rocha Lima e Marcondes
BROKEN : Preparação para inclusão da funcionalidade FEATURE-1234
* Funções de suporte* Refactoring da parte de leitura de arquivo* Teste de comunicação
Comentando Alterações na Versão
5/15/2012 Alexandre Rocha Lima e Marcondes
DLL 2.27.02
BUG-123 , BUG-345 , BUG-1234 FEATURE-1234 , FEATURE-234 , FEATURE 456
O Log de Alterações
5/15/2012 Alexandre Rocha Lima e Marcondes
O comentário do commité importantíssimo !
Não se esqueça dele pois ele aparece no Log
Blame – Quem mudou o que ?
5/15/2012 Alexandre Rocha Lima e Marcondes
Configure seu nome no menu Settings
para ter propriedade de parte do código
Comparação Entre Versões
5/15/2012 Alexandre Rocha Lima e Marcondes
Versões são numeradas por um
Hash SHA1
Resumo
Use o Index a seu favor (com um add), ele pode guardar estados intermediários
Guarde diariamente seu trabalho no repositório local com um commit
Sempre comente seus commits de forma adequada
Teste bem seu trabalho antes de fazer um push
Identifique os commits quebrados com BROKEN
Envie seu trabalho freqüentemente, mas sempre faça pull antes para integrar seu trabalho com possíveis alterações de outros colaboradores
5/15/2012 Alexandre Rocha Lima e Marcondes