O que é controle de versão?

O controle de versão, também conhecido como gerenciamento de código-fonte, usa ferramentas para rastrear alterações ou edições feitas no código-fonte ao longo do tempo. O controle de versão permite uma colaboração rápida e eficiente entre desenvolvedores, mantendo a integridade do código e permitindo que as equipes de desenvolvimento de software trabalhem sem medo de conflitos de código.

Controle de versão, explicado

O sistema de controle de versão (VCS) permite que as equipes façam backup e arquivem o código-fonte de seus projetos. Isso torna mais fácil revisar e fazer edições no repositório ou restaurar versões anteriores no caso de um erro de quebra de build.

O controle de versão é o processo sistemático de rastreamento e gerenciamento de atualizações de código-fonte e assets. Os sistemas de controle de versão são fundamentais para fluxos de trabalho eficientes, atuando como a única fonte da verdade para programadores, artistas e outros membros da equipe, permitindo que todos contribuam para uma base de código compartilhada de forma independente. Eles também atuam como uma rede de segurança, possibilitando a ação de “desfazer” atualizações de código se um erro catastrófico for introduzido durante o desenvolvimento.

Fatores como a dimensão e a distribuição geográfica da equipe podem influenciar quais sistemas de controle de versão um desenvolvedor de jogos pode optar por implementar. Desenvolvedores individuais podem achar que uma solução local é tudo o que precisam para permanecer no caminho certo, enquanto equipes maiores devem procurar um sistema de controle de versão mais robusto e escalável que os ajude a colaborar em fusos horários e regiões geográficas diferentes.

O controle de versão também oferece suporte à capacidade de criar ramificações. Uma ramificação é uma única cópia de código gerenciada em um VCS. Ao criar ramificações, os desenvolvedores e outros membros da equipe podem trabalhar independentemente uns dos outros em fluxos separados. O controle de versão ajuda os desenvolvedores a trabalhar de forma colaborativa e sincronizada em uma base de código compartilhada.

Por que o controle de versão é importante?

Os sistemas de controle de versão são um pilar central de DevOps, que permitem que as equipes colaborem e iterem rapidamente no código-fonte de um projeto.

Trabalhar com controle de versão significa ter sempre um backup. Atualizações de projetos individuais são reunidas periodicamente em um único grupo, conhecido como “commit”, antes de serem mescladas no código-fonte principal. Um software de controle de versão é essencial para rastrear toda as modificações em cada arquivo de projeto. Se for cometido um erro ou uma regressão, os usuários poderão retornar a uma versão anterior desse arquivo quase que instantaneamente. O controle de versão também fornece um registro de todas as alterações, quem as fez e todas as iterações de cada alteração. Com um sistema de controle de versão implementado, todas as partes interessadas e membros da equipe podem trabalhar harmoniosamente em vários arquivos simultaneamente. Os sistemas de controle de versão permitem mesclar todas as edições e alterações de código em um repositório centralizado.

Com acesso a um histórico completo do projeto e a capacidade de desfazer erros, os sistemas de controle de versão simplificam o rastreio de bugs e facilitam a restauração de recursos removidos anteriormente.

Sistemas de controle de versão centralizados

Como funciona o controle de versão?

A criação de um novo repositório em seu sistema de controle de versão abre a ramificação principal: ela é chamada de ramificação principal ou tronco principal. O tronco principal é onde a base de código principal entra no pipeline e é então compilada e implantada para o usuário final.

Então o que são ramificações? Ramificação é o processo de bifurcação do código da ramificação principal. Isso permite que os desenvolvedores façam suas próprias alterações pessoais no código sem adicioná-las no código principal. Usar ramificações significa que os desenvolvedores não precisam ter o histórico de arquivos completo em um único servidor; em vez disso, eles podem manter um histórico completo das alterações feitas em seu código ao longo do tempo. O sistema de controle de versão pode então pegar essas ramificações separadas e mesclá-las de volta na ramificação principal. Se um desenvolvedor não estiver pronto para mesclar as ramificações de sua tarefa na principal, ele poderá adicionar suas alterações em uma ramificação separada e mesclá-la na ramificação principal quando quiser.

Uma estratégia de ramificação adequada é crucial para evitar conflitos de código e builds quebradas. Felizmente, bons sistemas de controle de versão permitem que as equipes sincronizem facilmente com a ramificação principal e corrijam possíveis conflitos de código – mesmo após o código ter sido adicionado na ramificação de integração principal.

Sistemas de controle de versão distribuídos, explicado

Os sistemas de controle de versão distribuídos permitem fazer check-in, ramificar e mesclar sem se conectar ao servidor principal. Cada colaborador trabalha em um repositório clonado, armazenado na nuvem. A principal vantagem desses sistemas é que os membros da equipe podem trabalhar separadamente com rapidez, sem se preocupar com redes lentas ou VPNs. Também é possível trabalhar em um projeto offline, mas ainda é necessária uma conexão com a Internet para enviar ou receber atualizações

Os sistemas de controle de versão distribuídos podem vir com longos tempos de espera se você precisar baixar todo o histórico do seu projeto, principalmente em projetos grandes com extensos históricos de alterações. Os estúdios que trabalham com arquivos binários grandes devem monitorar cuidadosamente o uso do armazenamento, pois esses arquivos podem ocupar espaço rapidamente.

Os estúdios que procuram flexibilidade e potencial para aumentar a produtividade devem considerar o controle de versão distribuído.

Sistemas de controle de versão distribuídos

Sistemas de controle de versão centralizados, explicado

Os sistemas de controle de versão centralizados usam um fluxo de trabalho de “check-in/envio” para se conectar ao servidor principal. Quaisquer alterações ou atualizações no código-fonte são armazenadas automaticamente no repositório como uma nova versão. Os sistemas de controle de versão centralizados apresentam recursos poderosos de ramificação e mesclagem que não exigem que o repositório seja clonado em várias máquinas. Nesse sentido, é potencialmente mais seguro. Os sistemas de controle de versão centralizados exigem uma conexão de rede. Como as equipes estão vinculadas a uma única versão do projeto armazenada em um servidor, interrupções no serviço podem causar grandes lentidões. Outra desvantagem do controle de versão centralizado é que ele pode não escalonar bem. Quanto mais desenvolvedores você tiver contribuindo no projeto, menos oportunidades haverá para fazer mudanças em um ambiente estável, o que pode levar a problemas como conflitos de merge. Se você estiver interessado em sistemas de controle de versão fáceis de configurar e usar, considere um fluxo de trabalho centralizado.

Sistemas de controle de versão locais, explicado

Os sistemas de controle de versão locais são a forma mais simples de controle de versão e são usados mais por desenvolvedores individuais do que por equipes. Com o controle de versão local, todos os dados do projeto são armazenados em um único computador e as alterações feitas nos arquivos do projeto são armazenadas como patches. Cada patch contém apenas as atualizações implementadas desde o patch anterior. Se ocorrer um problema com uma versão específica do seu projeto, você deve examinar toda a coleção de patches para descobrir como os arquivos do projeto estavam em um momento específico para diagnosticar o problema. Por estarem vinculados a um computador, os sistemas de controle de versão locais são essencialmente menos flexíveis do que os sistemas distribuídos e centralizados. A colaboração entre membros da equipe será um desafio se o banco de dados estiver comprometido, podendo ser difícil — ou até impossível — restaurar as informações perdidas. Geralmente, não há problema em começar com o controle de versão local, mas assim que você começar a escalar (mesmo que esse aumento seja de uma para duas pessoas), é melhor começar a trabalhar de forma distribuída ou centralizada.

Benefícios do controle de versão

Rastreamento de modificações

Rastreie facilmente as modificações e mescle em todo o projeto

Comparação entre arquivos

Permite a comparação de arquivos e identifica as diferenças entre os arquivos

Solução de problemas

Fácil solução de problemas graças ao arquivo completo de alterações registrado no VCS

Repositório central

O repositório central permite uma colaboração harmoniosa sem prejudicar o desempenho individual ou alterações de código

Compartilhamento de arquivos

Libere espaço e tempo compartilhando arquivos facilmente com desenvolvedores e partes interessadas sem precisar salvar constantemente cópias de ajustes de código

Desenvolvimento distribuído

O desenvolvimento distribuído permite que os desenvolvedores trabalhem em qualquer lugar conforme sua conveniência

Leituras semelhantes

Explore mais recursos para aprender sobre sistemas de controle de versão e outras ferramentas e processos de DevOps.

Agile versus DevOps

O Agile e DevOps têm os mesmos objetivos: entregar valor ao cliente com cronogramas regulares de lançamento, mas eles diferem ligeiramente em sua abordagem. Veja como eles podem trabalhar juntos.

Princípios do DevOps

Todo estúdio de jogos quer acelerar a produção e reduzir crises, e o DevOps é a melhor maneira de fazer isso acontecer. Comece aprendendo os principais princípios por trás de uma metodologia DevOps.

Benefícios do DevOps

A implementação de práticas de DevOps pode otimizar seu pipeline de desenvolvimento e deixar sua equipe e seus usuários mais felizes. Saiba mais sobre como o DevOps pode te ajudar.

E-book Version control

Você deve trabalhar de forma centralizada ou distribuída? Cada abordagem tem suas vantagens e desvantagens. Saiba qual tipo de controle de versão funcionará melhor para sua equipe neste e-book gratuito.

Controle de versão para desenvolvimento de jogos

Trabalhe de forma distribuída e centralizada com os sistemas de controle de versão do Unity. Gerencie grandes arquivos binários com fluxos de trabalho baseados em arquivos e alterações. Armazene o código-fonte e os assets e rastreie as alterações com um sistema de controle de versão seguro, criado para qualquer engine.

Usamos cookies para garantir a melhor experiência no nosso site. Visite nossa página da política de cookies para obter mais informações.

Eu entendi