Sistema de Controle de Versão

7 min

Índice

  1. A Vida Sem Controlo de Versão
  2. Os Tipos de Sistemas
  3. Git
  4. GitHub
  5. 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

⬆️ Voltar ao índice


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ísticaLVCSCVCSDVCS
ColaboraçãoNãoSimExcelente
Trabalho offlineSimNãoSim
SegurançaFracaMédiaElevada
ComplexidadeSimplesMédiaElevada
ExemploRCSSVNGit

2.5 Ferramentas e Exemplos por Tipo de Sistema

TipoFerramentasCaracterísticasUsado 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.

⬆️ Voltar ao índice


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?

AspetoGitSVN
DesempenhoUltrarrápido (operações locais)Mais lento (depende do servidor)
ColaboraçãoBranches leves e merge inteligenteBranches complexas e conflitos frequentes
DisponibilidadeTrabalho offline possívelExige ligação ao servidor
SegurançaHistórico distribuído e seguroPonto ú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

⬆️ Voltar ao índice


4 - Github


GitHub: a Plataforma de Colaboração por Excelência

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.

⬆️ Voltar ao índice


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.

⬆️ Voltar ao índice