[PT-BR]Um pouco sobre versionamento de código
Tags: beginners, git, github, braziliandevs
Published: 2023-02-17 13:00:00

Um conhecimento paralelo às linguagens de programação, mas muito importante para qualquer desenvolvedor, é o versionamento de código. Como o nome sugere, é o conhecimento em versionar e/ou salvar versões de uma aplicação.

Falando dessa maneira, parece algo comum, como salvar vários arquivos das versões diferentes em pastas. Porém, na prática, o versionamento de código é algo ainda mais organizado - e um pouco mais complexo.

---

###O que é versionamento?

De maneira geral, todo projeto é feito por etapas, sendo que as funcionalidades são implementadas ou melhoradas aos poucos. Por isso, é preciso criar versões que possam ser retomadas sempre que necessário caso haja algum imprevisto.

Em outras palavras, o versionamento de código é como ter vários arquivos, sendo que cada um conta com melhorias em comparação com o anterior. Porém, em vez de ter que salvar muitos arquivos, - o que é inviável para a computação e para a organização no geral - são feitas essas versões, direto no código.

O versionamento de código faz parte das boas práticas de programação e se torna importante para a organização do projeto, consegue contribuir com o trabalho em equipe e também criar um “backup” de todas as mudanças.

###Como Fazer Versionamento?

O versionamento de código é feito durante a construção de código pelo desenvolvedor, utilizando o terminal da IDE escolhida - onde se escreve o código - ou no terminal do próprio computador.

Para fazer o versionamento, são utilizadas ferramentas específicas para isso, chamadas de sistema de controle de versão. Sendo o Git, a mais conhecida e que conta com várias funcionalidades que auxiliam nessa organização.

Ele precisa ser instalado e configurado em seu computador para funcionar localmente. Não tem uma interface visual, - apesar de que se pode instalar uma, sendo [GitKraken](https://www.gitkraken.com/download) a mais famosa- por isso a necessidade de utilizar o terminal para criar suas versões.

Além disso, o próprio versionamento também é feito em etapas, pois considera tanto o repositório local quanto um remoto. Assim, o Git tem a função de contribuir com a organização do código e também por enviá-lo para um repositório remoto.

![Processo de versionamento](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7ktbxic503xm7yfid56a.png)

Para conseguir fazer o versionamento de código é preciso conhecer os comandos do terminal, que criam os repositórios, os commits e revertem as versões.

###E o GitHub?

Muita gente acha que Git e Github são a mesma coisa, mas não são. O Github é uma ferramenta para reunir repositórios de forma remota. A partir do Git é possível enviar as alterações do código direto para o Github.

Ou seja, o Github funciona como um local remoto para armazenar o código e suas versões. Assim, é muito utilizado em equipes, já que todos conseguem enviar o que for feito remotamente e reunir tudo em um mesmo repositório remoto do Github.

Também é visto como uma interface visual do Git, já que mostra as branches e outros detalhes de maneira mais simplificada do que no terminal. Na prática, é como “salvar” sua versão na nuvem.

Por reunir os repositórios de um programador, o Github se tornou também uma rede social e um [portfólio](https://jasonh33.github.io/portfolio/), já que os repositórios públicos podem ser acessados pelas pessoas. Por isso, é interessante que todo programador tenha um Github e treine o versionamento do código com ele.

###Alguns Softwares

Entenda agora 5 das melhores ferramentas de controle de versão.

- <u>**GIT**</u>

O GIT é uma das ferramentas de controle de versão de software mais populares, principalmente em projetos open source. Isso se deve, principalmente, pela popularidade do GitHub, uma plataforma para hospedagem de códigos. Apesar de ela poder ser utilizada em outras ferramentas, o GIT é a que ganhou mais repercussão nesse aspecto.

As principais vantagens dessa ferramenta são o design interno e interface, a eficácia e o desempenho do software. Isso significa que ele é agradável de ser utilizado, consegue atingir todos os objetivos de um bom controle de software e é rápido. Porém, apresenta desvantagens relacionadas à simplicidade de utilização. Apesar de ser a principal ferramenta de controle de versão de software disponível no mercado, possui controles um pouco mais complexos quanto comparado a outros softwares.

Isso significa que os colaboradores precisam entender uma série de conceitos mais profundos, relacionados ao controle de versão de software, para utilizar essa ferramenta corretamente. Apesar disso, é uma ferramenta de controle de versão distribuída, o que significa que é adequado para a utilização em grandes equipes, nas quais os desenvolvedores não estão localizados geograficamente no mesmo local.

---

- <u>**Mercurial**</u>

O Mercurial é a ferramenta de controle de versão de software utilizada por grandes empresas como o Facebook e Google. Ela é bastante eficiente, o que significa que consegue desempenhar bem as funções básicas de um bom controle de software.

O Mercurial é uma ferramenta bastante rápida na execução dos comandos e ainda funciona muito bem para equipes grandes, nas quais os desenvolvedores não estão todos trabalhando no mesmo local. Isso porque ela é uma ferramenta de controle de versão distribuída.

Essa ferramenta não apresenta muitas desvantagens apontadas por críticos. Ela é um pouco mais complexa de ser utilizada em comparação com a Subversion, por exemplo. Porém, ainda é de aprendizagem fácil e rápida pelas equipes de desenvolvedores e possui medidas de segurança para impedir erros.

---

- <u>**Subversion**</u>

No meio corporativo, o Subversion é uma ferramenta de controle de versão de software bastante utilizada. Ela é bastante rápida na execução das funcionalidades do sistema e ainda se mostra como uma das mais simples de ser empregada. Isso significa que com um conhecimento básico de conceitos relacionados ao controle de versão de software é possível executar comandos na ferramenta. A aprendizagem da equipe também é rápida nesse aspecto.

Um dos problemas do Subversion são as críticas relacionadas à eficácia do software. No passado, essa ferramenta apresentou problemas na hora de executar as principais funções de um controle de versão de software eficiente. Porém, as últimas versões lançadas parecem ter solucionado tudo que foi apontado como desvantagem do programa.

O Subversion é uma ferramenta de controle de versão centralizada. Isso significa que não é indicada para todas as equipes de TI, apenas para aquelas que são menores - com apenas algumas dezenas de desenvolvedores - e estão reunidas em um mesmo espaço físico.

---

- <u>**TFS**</u>

O TFS — sigla para Team Foundation Server — é uma outra ferramenta de controle de versão de software que pode ser utilizada na sua empresa. Ele traz uma série de características interessantes, principalmente se você utiliza metodologias agile no setor de TI da sua empresa.

Isso porque ele possibilita a gestão de projetos por meio de SCRUM ou CMMI. Também permite a utilização de forma centralizada ou distribuída, sendo adequado tanto para equipes que compartilham o mesmo espaço físico quanto aquelas que trabalham à distância. Outra vantagem apresentada por esse sistema é o fato de não possuir limitações de crescimento e ter integração direta com o Microsoft Office.

---

- <u>**CVS**</u>

A CVS é uma das ferramentas de controle de software mais antigas no mercado. A primeira versão dela foi desenvolvida em 1968. Essa ferramenta possui como maior desvantagem o fato de ser considerada como uma tecnologia antiga. Porém, ainda é bastante utilizada por equipes de desenvolvedores.

É muito simples de ser operada. Isso significa que a sua equipe pode aprender rapidamente como usar todas as funcionalidades da CVS com eficiência.

---

Saber versionar um código da maneira correta é imprescindível para qualquer programador e, por isso, é considerado um conhecimento base da área. Não há como desenvolver um código sem conseguir versioná-lo da maneira correta.

Agora que você entende o básico de versionamento e alguns de seus softwares será necessário saber os comandos para utiliza-los, e este é justamente o tema do próximo artigo.