Versionamento

Role para baixo

Para Começar

Esta etapa aborda conceitos relacionados às Metodologias para Controle de Versões em Projetos Web.

No decorrer de seus estudos, esperamos que você desenvolva as seguintes capacidades:

  • Visão sistêmica de compartilhamento e evolução de códigos.
  • Reconhecimento do sequencial de versões de códigos.
  • Utilização de ferramentas de versionamento em projeto de TI.

Para desenvolver tais capacidades, você deverá estudar os seguintes temas:

  • Metodologias de versionamento.
  • Ferramentas disponíveis para gerenciamento de versões: instalação, configuração, repositórios, versionamento, alterações, correção de erros, Branchs e tags, arquivos, repositório remoto e boas práticas de versionamento.

Esse estudo será necessário para que você resolva a situação-problema a seguir. Então, avance para conhecê-la.

Situação-Problema

Você foi contratado como programador por uma empresa de desenvolvimento de software, chamada Hroad, que está realizando alterações no fluxo de trabalho de seus programadores, a fim de manter a integridade do código-fonte de seus softwares/solução.

Um dos atuais problemas é a necessidade de alteração de um código-fonte por diversos programadores. Quando duas ou mais pessoas precisam alterar o mesmo arquivo, muitos códigos são perdidos e sem a identificação das alterações que foram feitas por seus desenvolvedores. Além disso, quando uma alteração é feita por um desenvolvedor(a), ela fica difícil de ser rastreada.

Dado o contexto acima, seu coordenador lhe propôs a busca de soluções em que a equipe possa fazer o trabalho simultâneo no mesmo código-fonte sem quaisquer perdas ou intervenções. E, se possível, que o histórico das alterações seja facilmente rastreado.

Para que não haja atraso em nenhuma etapa, seu superior lhe atribuiu os seguintes desafios:

Clique nos botões abaixo para conhecê-los:

Desafio 1

Desafio 2

Desafio 3

Desafio 1

Nesta etapa, você deverá resolver o desafio 1:

  • Instalar um software que tem a finalidade de gerenciar diferentes versões — histórico e desenvolvimento — dos códigos-fontes.

Para isso, você estudará os seguintes conteúdos:

  • Metodologias de versionamento.

Versões de um Arquivo

Uma das vantagens de se trabalhar com arquivos digitais é a facilidade de alterá-los. Para manter o histórico dessas atualizações, é possível criar versões do arquivo original. Mas como manter o controle dessas versões ao longo do desenvolvimento do projeto?

Clique no player a seguir para acessar o vídeo sobre o primeiro tópico do conteúdo: o que é um projeto.

Versionamento de Código

Quando um novo projeto baseado em programação é criado, seja um software, plataforma ou site, é comum, mesmo após a entrega do projeto, a atualização de versões, com correção de bugs, adição de novas ferramentas, entre outros.

O versionamento de código é realizado por um sistema de controle de versões.

Um sistema de controle de versão armazena um conjunto de arquivos ou, como é comum dizer no mundo do desenvolvimento, o código-fonte do projeto (independentemente da linguagem de programação utilizada).

Ele oferece uma maneira eficiente e concisa de gerenciar as alterações de um mesmo arquivo. Cada membro pode visualizar o histórico de todas as modificações feitas pela equipe, incluindo a data de alteração e qual ponto do arquivo foi editado. O time pode atuar de maneira colaborativa, sem conflitos e sem sobreposição das alterações.

E se, porventura, você estiver desenvolvendo um determinado requisito de seu projeto e ele falhar, você pode voltar os seus arquivos a um ponto anterior em que seu projeto esteja estável.

Sendo assim, não é necessário criar múltiplas versões do mesmo arquivo e todos podem usar um único, simplificando o trabalho.

Podemos classificar os sistemas de controle em centralizados e distribuídos.

CVCS

No Sistema de Controle de Versão Centralizado (CVCS), apenas um único local armazena o histórico completo de alterações e, portanto, as estações de trabalho devem passar primeiro pelo servidor central para comunicarem-se.

No Sistema de Controle de Versão Distribuído (DVCS) há uma cópia de todo o trabalho desenvolvido com o histórico completo de todas as alterações feitas na máquina de cada desenvolvedor. Sua vantagem é que, caso ocorra alguma perda na parte central, basta realizar o backup de uma máquina de algum desenvolvedor ou membro da equipe.

DVCS

GIT

O Git é um Sistema de Controle de Versão Distribuído, portanto todos os programadores que estão utilizando-o têm uma cópia de todo o trabalho em suas máquinas locais. A cada alteração realizada pelo programador, seu histórico é mantido em sua máquina local e também no servidor central.

Além de ser um DVCS, o Git é também um open source (código aberto), ou seja, é um software que qualquer pessoa pode baixar, usar e modificar o código.

O sistema Git possibilita:

  • o registro de todo o histórico de alterações realizadas no código de um projeto e de quem realizou a mudança;
  • o retorno para versões anteriores e acesso ao código como estava antes de ser alterado;
  • o trabalho de vários programadores simultaneamente, no mesmo arquivo;
  • a restauração de um código removido ou modificado.
 

VOCÊ SABIA?

O Git e o GitHub foram desenvolvidos por Linus Torvalds, o criador do sistema Linux.

SAIBA MAIS...

Estude mais sobre sistemas centralizados e distribuídos clicando aqui.

Instalação do GIT no Windows

O Git foi projetado para ambientes estilo Unix, como os sistemas operacionais Linux e macOS. Para o sistema Microsoft Windows, é necessário instalar o Git Bash que emula o terminal (ou prompt) do Git.

DVCS

Git no Linux

DVCS

Git no Windows

Clique no player a seguir para acessar o vídeo com a instalação passo a passo do Git no Windows.

Configurações iniciais

Depois de instalado o Git, é hora de realizar as configurações iniciais.

A primeira configuração é identificar o nome de usuário e um endereço de e-mail. Assim, todas as atualizações (ou commits) feitas poderão ser identificadas.

Essa configuração pode ser global (válida para todo o sistema) ou local (para um projeto específico).

Fazendo a configuração global, não é necessário configurar cada projeto. Se a configuração local precisa ser alterada para um projeto específico, você pode rodar o comando sem a configuração global neste projeto.

Para esta configuração, utilizaremos o comando git config.

  • Abra um terminal (ou prompt de comando) em sua máquina. Digite git config e depois digite seu nome de usuário e seu e-mail, como na imagem a seguir, e tecle Enter.
DVCS

importante

Esses dois passos atualizarão suas informações de usuário e cada alteração feita manterá sua identidade como autor.

Posteriormente, seu resultado será algo semelhante a isto.

Vamos Praticar

1. O versionamento de código é realizado por um sistema de controle de versões. Selecione verdadeiro ou falso para cada alternativa a seguir, considerando as características desse tipo de sistema.

  1. Um sistema de controle de versão armazena o código-fonte do projeto.
  2. Verdadeiro

        Falso

  3. No Sistema de Controle de Versão Centralizado (CVCS), apenas um único local armazena o histórico completo de alterações.
  4. Verdadeiro

        Falso

  5. No Sistema de Controle de Versão Distribuído (DVCS) há uma cópia de todo o trabalho desenvolvido na máquina de cada desenvolvedor.
  6. Verdadeiro

        Falso

  7. Um sistema de controle gerencia alterações, mas não permite o retorno ao código-fonte do projeto.
  8. Verdadeiro

        Falso

2. Selecione a alternativa correta. O que é o Git?

  1. Sistema que só auxilia desenvolvedores.
  2. Sistema de controle de projeto.
  3. Sistema de controle de versão distribuído.
  4. Sistema de backup.

Atenção

Selecione uma alternativa.

Parabéns!

O Git é um Sistema de Controle de Versão Distribuído que mantém cada alteração realizada em uma máquina local e também no servidor central.

Ops! Tente novamente.

Lembre-se de que os sistemas de versão podem ser tanto centralizados quanto distribuídos.

Ops! Resposta incorreta.

A resposta correta é a alternativa c. O Git é um Sistema de Controle de Versão Distribuído que mantém cada alteração realizada em uma máquina local e também no servidor central.

3. Associe corretamente as características do sistemas GIT.

a. Sistema que emula o prompt de comando estilo Unix.
b. O Git é um software que qualquer pessoa pode baixar, usar e modificar o código.
c. Comando para identificar o nome de usuário e o seu endereço de e-mail.
d. Janela na qual se digita linhas de comando.

4. Identifique a resposta correta. O sistema de versionamento Git permite várias possibilidades. Dentre elas, podemos destacar:

  1. Registro parcial das alterações no código.
  2. Perda de códigos removidos ou modificados.
  3. Restauração de códigos removidos, limitado às cinco últimas atualizações.
  4. O trabalho simultâneo de vários programadores no mesmo arquivo.

Atenção

Selecione uma alternativa.

Parabéns! Resposta correta.

O Git permite que vários programadores trabalhem no mesmo arquivo, registrando todo o histórico de alterações.

Ops! Tente novamente.

Lembre-se de que o sistemas Git registra todo o histórico de alterações realizadas no código e identifica quem realizou a mudança.

Ops! Resposta incorreta.

A resposta correta é a alternativa d. O Git permite que vários programadores trabalhem no mesmo arquivo, registrando todo o histórico de alterações.

Atenção

Selecione uma alternativa.

Parabéns! Respostas corretas.

Um sistema de controle de versão permite o gerenciamento das alterações de um mesmo arquivo e o retorno ao código-fonte do projeto. Além disso, podem ser sistemas centralizados ou distribuídos.

Ops! Tente novamente.

Lembre-se de que um sistema de controle de versão armazena arquivos em sua forma original em um servidor central ou em uma máquina local.

Ops! Resposta incorreta.

As alternativas a, b, c, correspondem às características de um sistema de controle de versão, que permite o gerenciamento das alterações de um mesmo arquivo e o retorno ao código-fonte do projeto. Além disso, podem ser sistemas centralizados em um servidor central ou distribuídos em máquinas locais.

Atenção

Selecione todas as alternativas.

Parabéns! Respostas corretas.

Você fez a correspondência correta das características e das configurações iniciais do sistema Git.

Ops! Tente novamente.

Retorne ao conteúdo e estude com atenção as características e as configurações iniciais do sistema Git.

Ops! Respostas incorretas.

As respostas corretas são:

a. Git Bash

b. Open source

c. git config

d. prompt

Aproveite para estudar um pouco mais os tópicos, as características e as configurações iniciais do sistema Git.

Neste desafio...

Versionamento | Desafio 1

Você estudou que o processo de programação de qualquer sistema pode gerar uma grande quantidade de códigos e milhares de arquivos. Por isso, é imprescindível a utilização de uma ferramenta de versionamento que garanta o controle de cada versão do desenvolvimento de códigos, de modo que vários programadores possam realizar alterações simultaneamente e o autor da alteração também seja identificado.

Uma dessas ferramentas é o Git, um sistema gratuito para controle de versão de código, que registra todo o histórico de alterações e seus respectivos autores, permitindo o acesso a versões anteriores, o trabalho simultâneo em um mesmo arquivo, além da restauração de um código removido ou modificado.

No próximo desafio...

...você conhecerá como realizar todas as configurações e demais ações necessárias para a prática de monitoramento e gerenciamento de alterações no código.

Orientações de Navegação

Veja abaixo as orientações de como navegar pelo curso.

No topo da página é exibido o nome do desafio.

Indicador de progresso da aula.

Acesso aos principais recursos da página.

Direciona ao início do primeiro desafio.

Menu com a relação das seções do desafio.

Exibe as orientações de navegação.

Aumenta ou diminui o tamanho da fonte.

Exibe a tela de glossário da unidade.

Ajusta o contraste da tela.

Exibe a tela de créditos do curso.

Orientações para os exercícios:

Os exercícios contidos nos desafios do curso não fazem parte da composição da nota.
Para refazer os exercícios, atualize a página clicando no ícone      ao lado da barra de endereço do navegador ou pressione a tecla F5.

Título da seção

Buscar outra seção dentro do desafio

Glossáriospellcheck

Branch: ramo ou ramificação do tronco principal.

Bugs: falhas no software ou hardware.

Código-fonte: linhas de programação desenvolvidas em um software em sua forma original; são as instruções que geram o resultado para o usuário, como uma receita do bolo.

Commit: salvar as alterações no repositório.

Incrementos: crescimentos e adições ao seu próprio arquivo, projeto, que esteja sendo construído.

Informações sensíveis: informações que possam identificar a empresa ou o próprio projeto.

Prompt: janela na qual são digitadas as linhas de comando.

Repositório: local de armazenamento virtual, também conhecida por pasta ou diretório, para projetos.

Trunk: também chamado de master, é o tronco principal do projeto e contém o código-fonte.

Créditos

CONFEDERAÇÃO NACIONAL DA INDÚSTRIA – CNI


Robson Braga de Andrade

Presidente

DIRETORIA DE EDUCAÇÃO E TECNOLOGIA – DIRET


Rafael Esmeraldo Lucchesi Ramacciotti

Diretor de Educação e Tecnologia

SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL – SENAI – CONSELHO NACIONAL


Robson Braga de Andrade

Presidente

SENAI – DEPARTAMENTO NACIONAL


Rafael Esmeraldo Lucchesi Ramacciotti

Diretor-Geral

Gustavo Leal Sales Filho

Diretor de Operações

SENAI – DEPARTAMENTO NACIONAL

UNIDADE DE EDUCAÇÃO PROFISSIONAL E TECNOLÓGICA – UNIEP

Felipe Esteves Morgado

Gerente Executivo

Luiz Eduardo Leão

Gerente de Tecnologias Educacionais

Anna Christina Theodora Aun de Azevedo Nascimento

Adriana Barufaldi

Bianca Starling Rosauro de Almeida

Laise Caldeira Pedroso

Coordenação Geral de Desenvolvimento dos Recursos Didáticos Nacionais

Senai - Departamento Regional de São Paulo


Ricardo Figueiredo Terra

Diretor Regional

Cassia Regina Souza da Cruz

Gerente de Educação

Izabel Rego de Andrade

Supervisora do Centro SENAI de Tecnologias Educacionais

Claudia Baroni Savini Ferreira

Coordenação do Desenvolvimento do Curso

Helena Strada Franco de Souza

Elaboração de Conteúdo

Adilson Moreira Damasceno

Orientador de Práticas de Educação a Distância

Paula Cristina Bataglia Buratini

Coordenação da Produção do Curso

Cristina Yurie Takahashi

Design Educacional

Cleriston Ribeiro de Azevedo

Fabiano José de Moura

Juliana Rumi Fujishima

Ilustrações

Camila Ciarini Dias

Produção e Edição de Vídeos

Aldo Toma Junior

Web Design

Rafael Santiago Apolinário

Programação

Aviso

Parece que você já iniciou o curso, você pode: