Introdução ao controle de versão

Seleção, Instalação e Configuração

Seleção de um sistema de controle de versão

É claro que muitas organizações ou projetos já têm um sistema de controle de versão preferencial ou selecionado, se este for o seu caso, pule para a instalação do cliente.

Há uma série de coisas a serem consideradas ao selecionar o sistema de controle de versão a ser usado, dado sem ordem, pois todos terão prioridades diferentes:

  • Custos variam de quase nada a grandes somas se divide em
  • Custos Iniciais (não recorrente)
    • Server Software Initial Purchase price - ranges from zero to many thousands
    • Server hardware & operating provision costs
  • Taxas de uso contínuo (servidor) (recorrente)
    • Any Server Software annual or monthly licence &/or maintenance fees - ranges from zero to many thousands
    • Possible server storage fees hosted services often have some sort of storage fees
    • For hosted solutions you may also be looking at CPU time charges, bandwidth charges, etc.
    • Administration & Maintenance costs some high end version control systems require multiple full time administrators
    • Per developer/seat setup charges only when adding new team member or platform
      • Client software purchase price - ranges from zero to thousands
      • Developer (re-)training
    • Per developer/seat ongoing charges
      • Client software annual renewal/maintainace fees - ranges from zero to thousands
      • Any client usage fees
      • Developer re-training after any major updates to the VCS or the procedures
  • Plataformas disponíveis (Servidor) - qual(is) plataforma(s) pode(m) atuar como seu servidor se for necessário service pack, ou plataforma de hardware, ele toca sinos de alarme*
  • Plataformas disponíveis (Cliente(s)) - que plataforma ou plataformas seus desenvolvedores podem usar? Você está limitado a um único cliente? Mais uma vez, uma preferência pessoal é para vários clientes em várias plataformas
  • Disponibilidade
  • Possível uso off-line

Configuração do Servidor VCS

Isso será específico para o VCS selecionado acima.

Configuração do(s) Cliente(s) VCS

Isso será específico para os clientes VCS que correspondem ao servidor acima, mas existem alguns pontos em comum:

O que é controle de versão e por que usá-lo?

Um sistema de controle de versão permite que um desenvolvedor ou equipe de desenvolvimento acesse essencialmente a máquina do tempo. Se o código-fonte, configurações, etc., que foram usados ​​para construir um programa ou sistema estiverem sob controle de versão, os desenvolvedores podem voltar no tempo para recuperar a funcionalidade perdida, rastrear como os erros foram introduzidos, dar suporte aos usuários de versões mais antigas do software que, por uma razão ou outra, não estão ainda prontos ou capazes de atualizar para a versão mais recente.

As instâncias mais antigas de controle de versão estavam tirando um instantâneo do código-fonte em um ponto específico no tempo e colocando-os em um local seguro com um rótulo, em alguns casos, eram literalmente desenhos cheios de cartões perfurados.

Atualmente existem vários programas de controle de versão que simplificam esta tarefa que se enquadram em várias categorias distintas:

  • Soluções de backup simples não realmente controle de versão, mas às vezes reivindicado como tal
  • Rastreamento de alterações locais dentro de arquivos como no MS-Word
  • Bloqueio de sistemas de controle de versão centralizada como SCCS, CVS, Perforce, etc.
  • Sistemas de controle de versão centralizada permissiva como SVN
  • Controle de versão distribuído, como git e mercurial

Todos os sistemas de controle de versão devem permitir:

  • Reverter o código-fonte para um determinado ponto no tempo == desfazer infinito
  • Acompanhar as alterações que foram postadas no sistema
  • Atualize para uma versão posterior da ferramenta sem perder nenhuma informação

A maioria dos sistemas de controle de versão também inclui:

  • Comparação de mudanças
  • Rastreie quem fez uma determinada alteração
  • Permissões sobre quem pode fazer alterações
  • Integração com rastreamento de bugs
  • Backup off-machine, off-site ou online de todo o seu trabalho comprometido o que lhe dá uma sensação calorosa e no caso de ferramentas Distributed VCS cada desenvolvedor tem um backup completo de todo o histórico do projeto.

Muitas ferramentas de controle de versão incluem ou fornecem mecanismos para recursos adicionais, como:

  • Culpa quem mudou pela última vez qual linha em qual revisão
  • Crie, distribua e aplique patches basta enviar suas alterações
  • Colaboração por e-mail
  • Verificação automática de arquivos/alterações de entrada para garantir que eles atendam às regras determinadas
  • Revisão e/ou aprovação do código/alteração
  • Inserção automática do status da versão em arquivos para incorporação em seu programa
  • Versões experimentais, específicas de recursos ou específicas do cliente do código geralmente chamadas de ramificações
  • Trabalhar com ferramentas de Integração Contínua e/ou Teste Contínuo
  • Mecanismos de liberação e/ou implantação
  • Geração de notas de lançamento
  • Armazenamento temporário de alterações que você ainda não concluiu enquanto alterna para outra versão/ramificação para fazer outra coisa.
  • Pesquisa binária para permitir a localização de qual versão introduziu um bug específico

Para concluir esta seção, a maioria dos desenvolvedores de código profissionais ou sérios que trabalham em qualquer coisa, menos no código mais trivial, se apaixonam pelo controle de versão quando adquirem o hábito de usá-lo. Poder dizer, mesmo anos depois, o que exatamente mudou entre a versão 1.3.1 e a versão 1.3.1.1 pode ser de grande ajuda. Pessoas como auditores adoram bons sistemas e práticas de controle de versão, pois oferecem capacidade de rastreamento quando integrado a um sistema de rastreamento de problemas - podendo dizer “este problema foi corrigido por estas alterações produzidas por esta pessoa” ou “esta alteração foi feita esta data para resolver este problema” os deixa muito mais felizes. Ter, possivelmente, vários backups fora da máquina e/ou fora do local de todo o seu trabalho significa que, se sua máquina quebrar ou seu escritório for destruído, você poderá retomar o trabalho em pouco tempo. Se você estiver trabalhando em projetos de código aberto, o VCS provavelmente será sua principal ferramenta de colaboração e revisão, tentar trabalhar sem um não fará com que você não seja levado a sério por seus pares, (github , bitbucket, etc. são construídos em torno de ferramentas de controle de versão). Os usuários do seu programa final provavelmente não perceberão que você está usando uma ferramenta de controle de versão, mas eles vão adorar quando você puder dizer “esse problema foi corrigido na versão X.Y.Z se você atualizar para isso, você verá o problema vá embora”.