💡 Entendendo o Controle de Versão: E se o Git não existisse?
Hoje, experimentei uma profunda gratidão pelo Git.
Envolvida em meu projeto pessoal, onde dedico um pouco do meu tempo todos os dias, enfrentei o desafio de alternar entre dois computadores. Moro em São Paulo, e nos últimos dias, a cidade tem enfrentado chuvas intensas. Em meio a esse cenário, fiquei sem energia por dois dias consecutivos, tornando meu computador de trabalho inoperável durante esse período.
Nesse momento, minha eterna gratidão pelo Git e pela "Carolina do passado" floresceu. Utilizando o Git, salvei todas as alterações, mesmo as incompletas, em uma branch separada no meu repositório. Essa prática permitiu-me transportar meu notebook para outro local e continuar trabalhando no mesmo projeto, mesmo durante a interrupção de energia.
E ai me bateu uma dúvida...
E se o Git não existisse?
A evolução do controle de versionamento é notável, contrastando com os dias em que dependíamos de atalhos como CTRL+Z para desfazer alterações ou de cópias de pastas para criar versões distintas do código.
Compartilhar essas versões era um desafio naquela época, pois conflitos poderiam surgir, resultando na perda de importantes alterações.
Hoje, a evolução trouxe ferramentas incríveis, como a aba de "Linha do Tempo" no VSCode, proporcionando a capacidade de visualizar as diferenças entre as alterações e obter uma visão clara do estado atual do projeto.
Para solucionar os problemas, foram criados sistemas de versionamento de código, sendo um dos primeiros o Source Code Control System (SCCS), desenvolvido pela Bell Labs em 1972, e posteriormente, por outra empresa, o Git em 2005.
A distinção fundamental entre sistemas de versionamento centralizados e distribuídos é impressionante.
No Sistema Centralizado de Controle de Versão mantinha-se uma cópia principal do código em um servidor. As pessoas reservavam (faziam o checkout) desses arquivos para trabalhar localmente em seus próprios computadores. Durante esse período, os arquivos ficavam bloqueados para outros desenvolvedores, permitindo que apenas o usuário que os reservou fizesse edições até que fossem enviados de volta ao servidor (check-in) para atualizar as alterações.
Essa abordagem, embora evitasse conflitos, causava atrasos quando várias pessoas precisavam trabalhar no mesmo projeto ao mesmo tempo ou quando era necessário aplicar uma correção urgente, mas não se tinha certeza de quem estava trabalhando em determinado arquivo.
Já os sistemas distribuídos, como o Git, oferecem a cada desenvolvedor uma cópia completa do repositório em seu computador incluindo todo o histórico de alterações, permitindo a liberdade para trabalhar individualmente sem bloquear arquivos.
O Git, sendo como um álbum de fotos, captura cada alteração no projeto. Essas capturas, chamadas de "commits", registram não apenas o que mudou, mas também quem fez a mudança e quando. Essa capacidade permite que cada desenvolvedor trabalhe em seu próprio ritmo, compartilhando alterações quando estiver pronto. Sem se preocupar em interferir no trabalho dos outros.
A importância do Git se torna ainda mais evidente ao imaginar um mundo sem essa ferramenta. A colaboração em projetos de software seria caótica, presa a métodos arcaicos de compartilhamento de código. A ausência de um sistema descentralizado resultaria em conflitos constantes e perda de alterações importantes.
Os benefícios do Git, como o rastreamento detalhado do histórico de alterações e a capacidade de criar ramificações, seriam inexistentes. Sem essas funcionalidades, entender o passado, corrigir bugs e implementar novos recursos seriam desafios hercúleos.
A eficiência do Git em fusões e resolução de conflitos é inigualável. Sem essa capacidade, os desenvolvedores perderiam tempo valioso resolvendo disputas manualmente, levando a prazos perdidos e projetos desordenados.
A comunidade open source, impulsionada pelo Git, é vital para o desenvolvimento moderno. Sem essa ferramenta, a colaboração global e o compartilhamento de conhecimento seriam prejudicados.
Em um mundo onde imprevistos como a falta de energia ou mudanças repentinas fazem parte do cotidiano, saber que o Git é mais do que uma ferramenta, é um aliado poderoso para enfrentar esses desafios, é reconfortante. Afinal, o código pode mudar, mas a história por trás de cada linha escrita permanece intacta.
Esta newsletter no linkedin é um convite para você, que também está nessa jornada de desenvolvimento. É um espaço onde compartilho não apenas experiências, mas também conhecimento, erros e conquistas.