Você está na página 1de 6

Version Control Systems

O que é controle de versão?


Como o controle de versão ajuda as equipes de desenvolvimento
e DevOps de alto desempenho a prosperar
O controle de versão, também conhecido como controle de
origem, é a prática de rastrear e gerenciar alterações no código
do software. Os sistemas de controle de versão são ferramentas
de software que ajudam as equipes de software a gerenciar
alterações no código-fonte ao longo do tempo. À medida que os
ambientes de desenvolvimento aceleram, os sistemas de
controle de versão ajudam as equipes de software a trabalhar
com mais rapidez e inteligência. Eles são especialmente úteis
para equipes de DevOps, pois os ajudam a reduzir o tempo de
desenvolvimento e aumentar as implantações bem-sucedidas.
O software de controle de versão acompanha cada modificação
no código em um tipo especial de banco de dados. Se um erro for
cometido, os desenvolvedores podem voltar no tempo e
comparar as versões anteriores do código para ajudar a corrigir o
erro, minimizando a interrupção de todos os membros da
equipe.
miniatura do vídeo
Para quase todos os projetos de software, o código-fonte é como
as joias da coroa - um bem precioso cujo valor deve ser
protegido. Para a maioria das equipes de software, o código-
fonte é um repositório de conhecimento e compreensão
inestimáveis sobre o domínio do problema que os
desenvolvedores coletaram e refinaram por meio de um esforço
cuidadoso. O controle de versão protege o código-fonte tanto da
catástrofe quanto da degradação casual de erro humano e
consequências não intencionais.
Os desenvolvedores de software que trabalham em equipes
estão continuamente escrevendo um novo código-fonte e
alterando o código-fonte existente. O código de um projeto,
aplicativo ou componente de software geralmente é organizado
em uma estrutura de pastas ou "árvore de arquivos". Um
desenvolvedor da equipe pode estar trabalhando em um novo
recurso enquanto outro desenvolvedor corrige um bug não
relacionado alterando o código, cada desenvolvedor pode fazer
suas alterações em várias partes da árvore de arquivos.
O controle de versão ajuda as equipes a resolver esses tipos de
problemas, rastreando cada alteração individual de cada
colaborador e ajudando a evitar que o trabalho simultâneo entre
em conflito. As alterações feitas em uma parte do software
podem ser incompatíveis com as feitas por outro desenvolvedor
trabalhando ao mesmo tempo. Este problema deve ser
descoberto e resolvido de forma ordenada sem bloquear o
trabalho do restante da equipe. Além disso, em todo o
desenvolvimento de software, qualquer alteração pode
introduzir novos bugs por conta própria e o novo software não é
confiável até que seja testado. Assim, o teste e o
desenvolvimento seguem juntos até que uma nova versão esteja
pronta.
Um bom software de controle de versão oferece suporte ao fluxo
de trabalho preferido de um desenvolvedor sem impor uma
maneira específica de trabalhar. Idealmente, ele também
funciona em qualquer plataforma, em vez de ditar qual sistema
operacional ou cadeia de ferramentas os desenvolvedores devem
usar. Ótimos sistemas de controle de versão facilitam um fluxo
suave e contínuo de alterações no código, em vez do mecanismo
frustrante e desajeitado de bloqueio de arquivo - dando luz verde
a um desenvolvedor às custas de bloquear o progresso de outros.
As equipes de software que não usam nenhuma forma de
controle de versão geralmente se deparam com problemas como
não saber quais alterações feitas estão disponíveis para os
usuários ou a criação de alterações incompatíveis entre duas
peças de trabalho não relacionadas que devem ser
minuciosamente desembaraçadas e retrabalhadas. Se você é um
desenvolvedor que nunca usou o controle de versão, pode ter
adicionado versões aos seus arquivos, talvez com sufixos como
"final" ou "mais recente" e depois teve que lidar com uma nova
versão final. Talvez você tenha comentado blocos de código
porque deseja desabilitar certas funcionalidades sem excluir o
código, temendo que possa haver um uso para isso mais tarde. O
controle de versão é uma saída para esses problemas.
O software de controle de versão é uma parte essencial do dia a
dia das práticas profissionais da equipe de software moderna.
Desenvolvedores de software individuais que estão acostumados
a trabalhar com um sistema de controle de versão capaz em suas
equipes geralmente reconhecem o incrível valor que o controle
de versão também oferece a eles, mesmo em pequenos projetos
individuais. Uma vez acostumados com os poderosos benefícios
dos sistemas de controle de versão, muitos desenvolvedores não
considerariam trabalhar sem eles, mesmo para projetos que não
fossem de software.
Benefícios dos sistemas de controle de versão
O uso de software de controle de versão é uma prática
recomendada para equipes de software e DevOps de alto
desempenho. O controle de versão também ajuda os
desenvolvedores a se moverem mais rapidamente e permite que
as equipes de software preservem a eficiência e a agilidade à
medida que a equipe aumenta para incluir mais
desenvolvedores.
Os sistemas de controle de versão (VCS) tiveram grandes
melhorias nas últimas décadas e alguns são melhores que outros.
Os VCS às vezes são conhecidos como ferramentas SCM (Source
Code Management) ou RCS (Revision Control System). Uma das
ferramentas VCS mais populares em uso hoje é chamada Git. Git
é um VCS distribuído, uma categoria conhecida como DVCS, mais
sobre isso depois. Como muitos dos sistemas VCS mais populares
disponíveis hoje, o Git é gratuito e de código aberto.
Independentemente de como são chamados ou de qual sistema
é usado, os principais benefícios que você deve esperar do
controle de versão são os seguintes.
Um histórico completo de alterações de longo prazo de cada
arquivo. Isso significa que cada mudança feita por muitos
indivíduos
ao longo dos anos. As alterações incluem a criação e exclusão de
arquivos, bem como edições em seu conteúdo. Diferentes
ferramentas VCS diferem em quão bem elas lidam com
renomeação e movimentação de arquivos. Este histórico também
deve incluir o autor, data e notas escritas sobre o propósito de
cada alteração. Ter o histórico completo permite voltar às
versões anteriores para ajudar na análise da causa raiz de bugs e
é crucial quando é necessário corrigir problemas em versões
mais antigas do software. Se o software estiver sendo trabalhado
ativamente, quase tudo pode ser considerado uma "versão mais
antiga" do software.
Ramificação e fusão. Fazer com que os membros da equipe
trabalhem simultaneamente é um acéfalo, mas mesmo os
indivíduos que trabalham por conta própria podem se beneficiar
da capacidade de trabalhar em fluxos independentes de
mudanças. A criação de uma "ramificação" nas ferramentas VCS
mantém vários fluxos de trabalho independentes uns dos outros,
ao mesmo tempo em que fornece a facilidade de mesclar esse
trabalho novamente, permitindo que os desenvolvedores
verifiquem se as alterações em cada ramificação não entram em
conflito. Muitas equipes de software adotam a prática de
ramificar para cada recurso ou talvez ramificar para cada versão,
ou ambos. Existem muitos fluxos de trabalho diferentes que as
equipes podem escolher quando decidem como usar as
instalações de ramificação e fusão no VCS.
Rastreabilidade. Ser capaz de rastrear cada alteração feita no
software e conectá-lo ao software de gerenciamento de projetos
e rastreamento de bugs, como o Jira, e anotar cada alteração
com uma mensagem descrevendo a finalidade e a intenção da
alteração pode ajudar não apenas na análise da causa raiz e
outros forenses. Ter o histórico anotado do código ao seu alcance
quando você está lendo o código, tentando entender o que ele
está fazendo e por que foi projetado, pode permitir que os
desenvolvedores façam alterações corretas e harmoniosas que
estejam de acordo com o design pretendido a longo prazo do
sistema. Isso pode ser especialmente importante para trabalhar
de forma eficaz com o código legado e é crucial para permitir que
os desenvolvedores estimem o trabalho futuro com precisão.
Embora seja possível desenvolver softwares sem usar qualquer
controle de versão, isso sujeita o projeto a um risco enorme que
nenhuma equipe profissional seria aconselhada a aceitar.
Portanto, a questão não é usar o controle de versão, mas qual
sistema de controle de versão usar.

Noções básicas do Git


O Git é um sistema de controle de versão gratuito e de código
aberto, originalmente criado por Linus Torvalds em 2005. Ao
contrário dos sistemas de controle de versão centralizados mais
antigos, como SVN e CVS, o Git é distribuído: todo desenvolvedor
tem o histórico completo de seu repositório de código
localmente. Isso torna o clone inicial do repositório mais lento,
mas as operações subsequentes, como confirmação, culpa,
comparação, mesclagem e registro, são drasticamente mais
rápidas.
O Git também tem excelente suporte para ramificar, mesclar e
reescrever o histórico do repositório, o que levou a muitos fluxos
de trabalho e ferramentas inovadores e poderosos. As
solicitações pull são uma ferramenta popular que permite que as
equipes colaborem em ramificações do Git e revisem com
eficiência o código umas das outras. Git é o sistema de controle
de versão mais utilizado no mundo hoje e é considerado o
padrão moderno para desenvolvimento de software.
Como o Git funciona
Aqui está uma visão geral básica de como o Git funciona:
Crie um "repositório" (projeto) com uma ferramenta de
hospedagem git (como o Bitbucket)
Copie (ou clone) o repositório para sua máquina local
Adicione um arquivo ao seu repositório local e "confirme" (salve)
as alterações
"Empurre" suas alterações para sua ramificação principal
Faça uma alteração em seu arquivo com uma ferramenta de
hospedagem git e confirme
"Puxe" as alterações para sua máquina local
Crie uma "ramificação" (versão), faça uma alteração, confirme a
alteração
Abra um "pull request" (proponha mudanças na ramificação
principal)
"Mescle" sua ramificação com a ramificação principal

Você também pode gostar