múltiplas versões e da história dos vários arquivos • Ele guarda apenas as diferenças entre as versões (exceto arquivos binários) • Se for fazer back-up de algo, que seja dele • São só arquivos
programadores trabalham • Cada programador tem a sua • Locking otimista – permite mais de uma pessoa trabalhando no mesmo arquivo e resolve os conflitos depois • Precisa receber updates do repositório para que o programador não trabalhe sobre versões velhas (o que não é tão problema assim)
cria um módulo 3. Alguém coloca arquivos dentro do módulo 4. Alguém baixa os arquivos atuais para sua área de trabalho 5. Alguém sobe arquivos mudados para a área de trabalho (cliente CVS sabe quais foram)
e o que quebrou • Desfazer os erros • Desfazer os erros dos outros • Desfazer os erros da semana passada • Quem fez o que? • Centralizar equipes distribuídas
o seu trabalho • Ele não substitui comunicação entre desenvolvedores • Ele não substitui um gerente de projeto • Ele é só um software • Ele não lida muito bem com coisas que mudam de nome ou de lugar
para as coisas realmente “cabeludas” – igual em quase qualquer plataforma • WinCVS: Todos os sinos e apitos • MacCvsX: Todos os sinos e apitos, em Mac • gCVS: Para GTK+ • Plug-in para Visual Studio (ainda em pre- release) • Tortoise CVS: Integração total com o Windows Explorer – eu gosto desse • Suporte embutido em seu IDE favorito
Windows Explorer • Muito, muito fácil de usar (desde que se tenha alguma noção de como o CVS funciona) • Software Livre • Leve (roda em PCs com menos memória que alguns PDAs)
no menu de contexto, escolha “CVS>Make New Module” • Na pasta que contém os arquivos escolha “CVS Add Contents” • Entre na pasta e observe os ícones vermelhos • Escolha “CVS Commit” – Se quiser contar um pouco da história dessa atualização, agora é um bom momento
para começar a trabalhar com um projeto no CVS é gerar sua cópia de trabalho • Em uma pasta vazia, escolha “CVS Checkout” • No CVSROOT coloque “:local:p:\\repositorio” e escolha o módulo “projeto” • Na pasta, escola “CVS Update” • Verde indica que o arquivo não foi modificado desde que foi trazido do repositório • As últimas alterações são baixadas para sua máquina com “CVS Update” – faça isso com frequência
de usar o “Commit” de novo • Commit manda tudo o que está “pendente” na sua área de trabalho para o servidor • Se houver conflitos, ele consegue resolver automaticamente sozinho (ele avisa, claro) • Se ele não conseguir, ele espera que você arrume
de arquivos como uma versão. Para isso, use “CVS>Tag” • Usando “Update Special” você pode obter os arquivos de um determinado tag ou de uma determinada data. • CVS não faz nem build nem deploy (até certo ponto). Isso é por sua conta.
uma determinada versão para o servidor de web – Você pode, inclusive, servir as páginas a partir de uma área de trabalho do CVS e atualizá-las com “update” • Programas Compilados – Você pode guardar os makefiles junto dos fontes no CVS – Você faz o build e o deployment
produto • Mas ela tinha um bug sério • Só que os fontes estão entre a 1.0 e a 1.1 • E você precisa consertar a 1.0 • Você faz um branch sobre o tag que você criou • Você trabalha no branch • Quando arrumar, faz o merge (ou não)
data • $Revision$ - Identificador da revisão • $Author$ - Login do usuário que fez o último check-in • $Log$ - Comentário do check-in • $Date$ - Quando essa versão foi acrescentada ao repositório
além dos fontes • Documentação (cuidado com arquivos binários) • Imagens, scripts de ajuda, carga inicial de BD, dados de testes, etc. • Makefiles, arquivos de projeto (mas eu já disse isso)