Sistema de Controle de Versão

De Wiki Colaborativa do SISP
Revisão de 19h31min de 18 de agosto de 2016 por Felipe.carminati (Discussão | contribs) (Criou página com '== Sistemas de Controle de Versão == O sistema de controle de versão é uma ferramenta capaz de registrar e acompanhar mudanças realizadas nos mais diversos artefatos de u...')

(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
Ir para: navegação, pesquisa

Sistemas de Controle de Versão

O sistema de controle de versão é uma ferramenta capaz de registrar e acompanhar mudanças realizadas nos mais diversos artefatos de um software durante todo o seu ciclo de vida. Essas ferramentas possibilitam a recuperação das versões anteriores de qualquer artefato do software, seja ele documentos, código-fontes, scripts de instalação, entre outros. Em qualquer momento, é possível obter todas as versões registradas do software.

Boas práticas de desenvolvimento de software implicam na utilização de sistemas de controles de versão, já que sua utilização permite que a equipe trabalhe simultaneamente no mesmo projeto, compartilhando e visualizando as mudanças e evoluções realizadas no software, além de permitir a visualização da última pessoa a realizar a mudança nos artefatos.

Uma outra vantagem na utilização de um SCM, é permitir a recuperação do projeto, caso um arquivo ou até mesmo o projeto inteiro tenha parado de funcionar, pode-se voltar a versão anterior e refazer os procedimentos.


Tipos de Ferramentas de Controle de Versão

As ferramentas de controle de versão podem ser divididas em três formas: Centralizada, Distribuída e Local.

Local – Consiste em copiar os arquivos para um diretório local, dentro da própria máquina, contendo a última data de modificação. Não possui nenhum controle fazendo com que a pessoa perca o local onde ela guardou os arquivos. Existem algumas ferramentas que buscam realizar o controle sobre os arquivos gerando maior organização durante o controle de versão local. Contudo se duas pessoas quisessem trabalhar em um mesmo módulo de um mesmo projeto, não será possível, já que o arquivo será trabalhado utilizado simultaneamente por duas pessoas.

Centralizada – É baseado na arquitetura do tipo cliente-servidor, ou seja, existe um repositório central (servidor), sendo que a cópia de cada um desses repositórios são feitos para os computadores dos desenvolvedores (clientes). Os artefatos dos softwares são direcionados somente para o servidor, sendo assim, a comunicação do repositório do projeto é feito estritamente para o servidor. Um exemplo de sistema de controle de versão que utiliza esse padrão é o Subversion (SVN).

Distribuída – Utilizada no Git, essa forma é baseada na arquitetura P2P (peer-to-peer). Assim como na arquitetura centralizada, é realizada uma cópia do repositório do servidor para as máquinas de cada desenvolvedor. No entanto, nesse modelo os repositórios dos membros do projeto podem comunicar entre si ou através de um repositório "oficial", que está centralizado. No caso de queda do servidor, o projeto não é paralisado, já que é possível os membros realizarem as interações entre eles. mesmos.

Ferramentas de Controle de Versão

Na Tabela abaixo, são apresentadas algumas alternativas de ferramentas para controle de versão. É importante ressaltar que todas as ferramentas possuem o código aberto e são multiplataformas.

Ferramenta Tipo Descrição Características
Baazar Distribuída
  • Desenvolvido pela Canonical
  • Escrito em Python, Pyrex e C
  • É utilizado no projeto GNU
  • Suporte a vários fluxos de trabalhos
  • Multiplataforma
  • Arquitetura baseada em plugins
  • Integração com ferramentas de controles de projetos
  • Integração com o Launchpad
Mercurial Distribuída
  • Desenvolvido por Matt Mackhall
  • Escrito em Python

-

Git Distribuída
  • Desenvolvido por Linus Torvalds
  • Utilizado para o Desenvolvimento do Kernel Linux
  • Escrito em C
  • Atualmente é o sistema de controle de versão mais difundido.
  • Grande variedade de projetos e repositórios
  • Facilidade de uso
  • Integração com ferramentas de gerenciamento de projetos
  • Eficiência em seu armazenamento e velocidade na execução dos comandos
Subversion Centralizada
  • Desenvolido pela Apache Software Foundation
  • Escrito em C

- sdsdsd

O que é Git?

O Git é uma ferramenta de controle de versão, assim como Subversion (SVN), Bazaar, Mercurial, entre outros. Essas ferramentas são utilizadas para registrar mudanças realizadas nos artefatos durante o projeto de software (documentos, código, entre outros). É possível também através dessas ferramentas realizar todo o controle das versões desses artefatos podendo até mesmo recuperar as versões anteriores dos arquivos a qualquer momento.

O Git possui suporte a todos os tipos de arquivos (java, php, rb, doc, etc). Usar um sistema de controle de versão, significa compartilhar as mudanças e contribuições realizadas entre um determinado time ou até mesmo pessoas que não se conhecem e descobrir quem foi a última pessoa a realizar a mudança nos arquivos, além disso, possibilitar a visualização das mudanças para todos os membros do time.

A grande vantagem de se utilizar um sistema de controle de versão é que caso você tenha feito alguma alteração não desejado em um arquivo ou no projeto inteiro, pode-se voltar ao passo anterior e recuperar o(s) arquivo(s)/projeto. Além disso, um sistema de controle de versões permite que o time trabalhe simultaneamente no mesmo projeto, sem a necessidade de preocupação caso estejam trabalhando em um mesmo arquivo.

Mais Informações

Para mais informações, acesse o artigo da Wikipedia: Sistema de controle de versão;