Como o Git mudou a história do controle de versão de software

Juan Buis

Este post apareceu originalmente no Blog de Codificação . A Codacy , patrocinadora semanal do Hacker Noon, automatiza os padrões de qualidade e as revisões de código em todas as solicitações de commit e pull, assim você pode enviar dois dias antes a cada duas semanas de sprint. Use o código HACKERNOON para 15% de desconto.

Os computadores só existem há algum tempo, mas muita coisa já aconteceu. Ao longo do caminho, tem havido alguns marcos imperdíveis – basta pensar no advento da internet, no sucesso comercial dos smartphones e na atual onipresença das mídias sociais.

Alguns dos progressos, no entanto, aconteceram longe dos holofotes. Essas coisas podem não ter sido interessantes para as massas, mas elas foram fundamentais para moldar como usamos a tecnologia hoje.

O desenvolvimento de software pode ser a única coisa na tecnologia que é a mais suscetível a mudanças. A cada dois anos, parece que existe uma nova linguagem de programação, estrutura ou conceito que tem milhares de desenvolvedores se reunindo para trabalhar com ela. Apenas alguns deles realmente se encaixam, é claro, e Git definitivamente foi um deles.

Hoje, é o único sistema de controle de versão mais usado, e sua influência é difícil de exagerar. Mas antes de chegarmos ao Git, é vital entender como surgiu o conceito de controle de versão e por que ele é tão importante para o estado atual do desenvolvimento de software.

VCS: uma história abreviada

Computadores tornaram-se máquinas muito amigáveis. Se você errar e excluir acidentalmente alguns parágrafos de um documento importante, não há motivo para pânico – basta clicar em desfazer. Mas nem sempre foi assim.

Nos primórdios da revolução digital, a maioria das pessoas nem sequer tinha ouvido falar de computadores – mas os que tiveram muito mais dificuldade em usá-los. Na época, os desenvolvedores de software não tinham acesso a um sistema de controle de versão e, em vez disso, trabalhavam com uma única pessoa que possuía a versão principal de um projeto. Essa pessoa só compartilhava a parte específica do código em que alguém precisava trabalhar, um desenvolvedor retornava o código finalizado e, finalmente, tudo era verificado quanto a padrões antes que a versão antiga fosse totalmente substituída pela nova versão.

Tudo somado, foi um processo bastante tedioso. A menos que alguém fizesse cópias recorrentes, não havia acesso fácil às versões anteriores. Até que um dia em 1972, quando o desenvolvedor Marc Rochkind não conseguiu mais lidar com isso. Ele acabou criando o Sistema de Controle de Código Fonte (SCCS) , o primeiro sistema de controle de versão. Era bastante limitado em termos de funcionalidade – apenas uma pessoa poderia estar trabalhando em um arquivo por vez e o desenvolvimento simultâneo era gerenciado com bloqueios. No entanto, ele também resolveu muitos problemas – várias versões não precisavam ocupar mais espaço em disco, e as otimizações de mesclagem se tornaram muito mais fáceis.

A segunda geração do VCS consistia em ferramentas como o CVS e veio com melhorias em toda a linha. Em geral, eles davam aos usuários muito mais flexibilidade, mas uma coisa permanecia: as revisões precisavam ser mescladas antes que pudessem ser confirmadas. Era hora de resolver esse problema e levar o controle de versão para uma nova era.

Git: uma estrela em ascensão

Logo depois, a indústria se viu no alvorecer dos VCS de terceira geração, que foram os primeiros a separar a fusão e o comprometimento. Esses sistemas de controle de versão distribuídos visavam melhorar a velocidade, a integridade dos dados e suportar fluxos de trabalho distribuídos e não lineares.

Na vanguarda dessa onda de sistemas estava o Git , um DVCS inventado pelo co-criador do Linux Linus Torvalds. Quando foi lançado pela primeira vez em 2005, a maioria das pessoas ainda usava o Apache Subversion (SVN) , mas ao longo da década seguinte os dois se envolveram em uma guerra de navegadores . Hoje, o Git se tornou a principal ferramenta de controle de versão. Mesmo o Mercurial , seu concorrente de terceira geração mais popular, fica muito atrás em termos de uso.

Por que o Git é ótimo?

Então, por que o Git se tornou tão amplamente adotado e como ele se tornou a primeira escolha dos desenvolvedores de hoje? Principalmente porque foi um enorme passo em frente para o controle de versão.

1. Git é distribuído

Esta é de longe a maior e mais importante diferença entre o Git e tudo o que se tornou antes dele. Em vez de depender de um servidor centralizado, as pessoas agora podiam enviar, registrar e fazer qualquer outra coisa localmente, em tempo real, sem precisar usar uma VPN ou estar on-line. De repente, era muito mais fácil para as pessoas trabalharem juntas remotamente – mesmo em fusos horários. Isso também significava que, no caso de uma emergência, os dados de origem não seriam perdidos como no passado, já que todos efetivamente tinham uma cópia completa em sua unidade local que poderiam enviar para o servidor.

Além disso, os desenvolvedores agora tinham acesso a fluxos de trabalho muito mais flexíveis. O Git pode trabalhar com múltiplos repositórios e sincronizar mudanças entre eles, abrindo um mundo de possibilidades. Por exemplo, você pode limitar o acesso de gravação de alguém a repositórios específicos, para que um gerente possa verificar seu trabalho antes de mesclá-lo em um repositório central

2. O Git redefine a ramificação e a fusão

Embora existissem ramos em VCSs de segunda geração, a maneira como eles funcionavam os tornava muito mais complicados. No Git, eles são elementos-chave do sistema e funcionam perfeitamente – por exemplo, criar um branch acontece local e instantaneamente. Dependendo da sua conexão com a Internet, o status do servidor e outros fatores, isso levaria muito mais tempo em um VCS gerenciado centralmente como o Subversion. Essa maneira rápida de trabalhar facilita a criação de uma ramificação rápida para quaisquer ideias que você tenha, para que você possa mais tarde decidir se deseja realmente adicioná-las ao mestre ou descartá-las.

O Git também lida com as fusões muito mais graciosamente que os sistemas anteriores. Como ele usa uma maneira diferente de gravar o histórico de confirmações, ele é capaz de lembrar de tudo que já foi mesclado, diminuindo significativamente o número de conflitos que ocorrem.

3. Git tem uma área de preparação

Outra grande característica do Git é aquela que facilitou muitas vidas. Embora os VCSs anteriores exigissem que os usuários comprometessem todas as alterações ao mesmo tempo, a área de preparação permite dividir todo o trabalho em vários conjuntos de alterações. Quando estes são encenados e comprometidos individualmente, torna mais rápido para os outros descobrirem a estrutura do que você está fazendo.

4. Git teve a melhor campanha de marketing

Mesmo sendo um sistema estelar por si só, é difícil negar que o Git tinha outras coisas também. O fato de que foi criado por Torvalds, um desenvolvedor influente com muitos seguidores, definitivamente ajudou sua taxa de adoção – mas havia mais uma coisa que contribuiu muito para o sucesso.

GitHub: o motor oculto

Quando se fala em Git, é impossível pular o GitHub – uma das forças motrizes por trás da popularidade do sistema, e também uma grande influência na tecnologia em si.

Na época de seu lançamento em 2008, o Sourceforge era a maneira padrão para desenvolvedores de software livre compartilharem projetos – mas ninguém realmente gostou. O serviço estava cheio de anúncios, e geralmente oferecia uma experiência de usuário ruim. Em comparação, o GitHub parecia uma lufada de ar fresco – principalmente porque era realmente bom. Quando a empresa anunciou que a hospedagem para o código aberto seria gratuita, todos começaram a usá-lo para seus projetos pessoais, e essa popularidade acabou se espalhando para a indústria profissional ao longo do tempo.

Ele rapidamente se tornou o serviço de hospedagem para o Git, oferecendo todos os seus recursos padrão e adicionando novos recursos no topo. Ele transformou efetivamente o DCVS em uma rede social, adicionando recursos como perfis de usuário, repositórios públicos e solicitações de recepção, o que criou uma comunidade exclusiva de codificadores. Por fim, ela se tornou a principal plataforma de compartilhamento de códigos do mundo, na qual milhões de desenvolvedores colaboram em todos os tipos de projetos.

Ao longo dos anos, o Git e o GitHub lucraram muito com o crescimento um do outro. Isso é algo que se torna óbvio quando se fala de novos programadores, que geralmente os misturam ou pensam que são a mesma coisa. O mais importante, no entanto, é que a combinação deles foi um enorme passo à frente para o desenvolvimento de software, simplificando e aprimorando a maneira como estamos construindo as aplicações do futuro – e esse é um truque que não é fácil de usar.

Descubra mais sobre o Github Code Review