Índice
- A Vida Sem Controlo de Versão
- Os Tipos de Sistemas
- Git
- GitHub
- Conclusão
1 - A Vida Sem Controlo de Versão
1.1 O Cenário Catástrofe Quotidiano
Imagine esta situação familiar:
- Trabalha num projeto de desenvolvimento de software
- Tem uma ideia brilhante para uma nova funcionalidade
- Passa horas a desenvolvê-la
- Faz testes aprofundados
- Implanta-a com sucesso
- Passam algumas semanas...
- Desenvolve novas funcionalidades
- De súbito, aparece um bug crítico
- Quer voltar à versão anterior
- Mas é impossível reencontrar a versão antiga funcional
- Resultado: perda de tempo, stress e frustração
1.2 Por Que Usar um Controlo de Versão
O cenário catástrofe descrito acima ilustra perfeitamente por que precisamos de um sistema de controlo de versão. Eis as principais vantagens:
1.2.1 Rastreabilidade Completa
- Histórico detalhado: cada alteração é gravada com metadados (autor, data, descrição)
- Retrocesso possível: possibilidade de voltar a qualquer versão anterior
- Compreensão da evolução: visualização clara da evolução do projeto
1.2.2 Colaboração Eficaz
- Trabalho em paralelo: vários programadores podem trabalhar em simultâneo
- Fusão inteligente: as alterações podem ser fundidas automaticamente
- Resolução de conflitos: ferramentas para gerir alterações contraditórias
1.2.3 Segurança e Salvaguarda
- Backup automático: cada versão é salvaguardada
- Sem perda de dados: as versões antigas permanecem acessíveis
- Restauro fácil: regresso rápido a uma versão estável em caso de problema
1.2.4 Produtividade Melhorada
- Testes sem risco: possibilidade de experimentar sem receio
- Implantação controlada: gestão das versões de produção
- Documentação integrada: o histórico serve de documentação
2 - Os Tipos de Sistemas
Existem três tipos principais de sistemas de controlo de versão, cada um com vantagens e inconvenientes:
2.1 Sistema Local (LVCS)
- Base de dados simples na sua máquina local
- Histórico das alterações armazenado localmente
- Sem colaboração possível
- Risco de perda de dados
2.2 Sistema Centralizado (CVCS)
- Servidor central que armazena o histórico
- Os programadores obtêm apenas a última versão
- Colaboração possível mas limitada
- Ponto único de falha
2.3 Sistema Distribuído (DVCS)
- Cada programador tem uma cópia completa
- Trabalho possível offline
- Colaboração avançada
- Alta disponibilidade e segurança
2.4 Comparação dos Sistemas
Eis um quadro comparativo dos diferentes sistemas:
| Característica | LVCS | CVCS | DVCS |
|---|
| Colaboração | Não | Sim | Excelente |
| Trabalho offline | Sim | Não | Sim |
| Segurança | Fraca | Média | Elevada |
| Complexidade | Simples | Média | Elevada |
| Exemplo | RCS | SVN | Git |
2.5 Ferramentas e Exemplos por Tipo de Sistema
| Tipo | Ferramentas | Características | Usado por |
|---|
| LVCS | • RCS • SCCS • Source Integrity | • Armazenamento apenas local • Base de dados simples • Sem rede necessária | • Programadores a solo • Projetos pequenos • Sistemas embutidos |
| CVCS | • SVN (Subversion) • CVS • Perforce • ClearCase | • Servidor central • Números de versão sequenciais • Exige uma ligação | • Empresas tradicionais • Projetos legacy • Equipas localizadas |
| DVCS | • Git • Mercurial • Bazaar • Fossil | • Cópias completas • Branches leves • Fusão avançada | • Startups • Open Source • Equipas distribuídas |
Nota histórica: a evolução dos VCS reflete a das práticas de desenvolvimento, passando de sistemas simples e locais a soluções distribuídas adaptadas ao trabalho colaborativo moderno.
Nota importante: hoje, o Git tornou-se o padrão incontornável na indústria do desenvolvimento de software. Quer para projetos pessoais, startups ou grandes empresas, o Git é usado por mais de 90% dos programadores no mundo. A sua dominância é tal que o domínio do Git é agora considerado uma competência fundamental para qualquer profissional do desenvolvimento.
3 - git
Git: o Novo Padrão da Indústria
O Git impôs-se como o sistema de controlo de versão dominante, substituindo progressivamente o SVN (Subversion) na maior parte das organizações:
Adoção Massiva
- Empresas Tech: mais de 90% dos gigantes como Google, Microsoft e Amazon usam Git
- Open Source: o GitHub aloja mais de 200 milhões de repositórios Git
- Migração Progressiva: muitas empresas abandonam o SVN pelo Git
Por Que o Git Substitui o SVN?
| Aspeto | Git | SVN |
|---|
| Desempenho | Ultrarrápido (operações locais) | Mais lento (depende do servidor) |
| Colaboração | Branches leves e merge inteligente | Branches complexas e conflitos frequentes |
| Disponibilidade | Trabalho offline possível | Exige ligação ao servidor |
| Segurança | Histórico distribuído e seguro | Ponto único de falha |
Impacto na Indústria
- Padrão de Facto: o Git tornou-se uma competência essencial para os programadores
- Ecossistema Rico: GitLab, GitHub, Bitbucket oferecem soluções completas
- DevOps e CI/CD: o Git integra-se perfeitamente nos pipelines modernos
4 - Github
O GitHub é como uma rede social para o código! Imagine que o Julien e o Marc trabalham juntos num projeto:
Um Exemplo Concreto
O Julien e o Marc desenvolvem uma aplicação móvel:
- O Julien trabalha no ecrã de início de sessão
- O Marc trata do menu principal
- Cada um pode ver o trabalho do outro
- Podem comentar e sugerir melhorias
As Vantagens para as Equipas
- Visibilidade: toda a gente vê quem faz o quê
- Colaboração: fácil partilhar e discutir o código
- Organização: os projetos estão bem arrumados e documentados
- Segurança: as alterações são rastreadas
Mais do que um Simples Alojamento
O GitHub também oferece:
- Um espaço para a documentação
- Ferramentas de gestão de projeto
- Um sistema de acompanhamento de problemas
- Funcionalidades de revisão de código
Em resumo: o GitHub é como um espaço de trabalho virtual onde os programadores podem colaborar facilmente, partilhar o código e acompanhar a evolução dos projetos.
5 - Conclusão
Conclusão: Git e GitHub — Uma Distinção Importante
Em conclusão deste capítulo sobre os sistemas de controlo de versão, é crucial esclarecer uma confusão habitual:
Git ≠ GitHub
Git é:
- Um sistema de controlo de versão distribuído
- Uma ferramenta de linha de comandos
- Um software livre criado por Linus Torvalds
- Independente de qualquer serviço de alojamento
GitHub é:
- Uma plataforma de alojamento de código
- Um serviço web proprietário (pertencente à Microsoft)
- Uma interface web para gerir repositórios Git
- Um dos muitos serviços baseados em Git (como GitLab, Bitbucket)
Analogia: o Git é como a tecnologia email (SMTP), enquanto o GitHub é como o Gmail — um serviço entre outros que usa essa tecnologia.
Esta distinção é fundamental porque:
- Pode-se usar Git sem GitHub
- Outras plataformas oferecem serviços semelhantes
- As competências Git são transferíveis para qualquer plataforma
O domínio do Git, independentemente da plataforma escolhida, continua a ser uma competência essencial para qualquer programador moderno.