GIT: Controle de versões distribuído para projetos de software

O desenvolvimento de projetos de software está a cada dia que passa mais colaborativo e integrado. Nesse artigo veremos como funciona um sistema de controle de versão VCS/SCM, abordando de forma mais ostensiva os sistemas de controle distribuído, mais detalhadamente o GIT, uma poderosa ferramenta criada por Linux Torvalds e bastante apropriada para o gerenciamento e controle de códigos fontes.

[ Hits: 75.694 ]

Por: Gleudson Junior em 13/02/2010 | Blog: http://www.gleudsonjunior.blogspot.com/


Controle de versionamento distribuído



Proporcionalmente inverso aos sistemas de controle de versões centralizados, os VCS distribuídos, também chamado de DVCS* tem uma arquitetura muito mais complexa e até um tanto quanto complicada para compreensão de iniciantes, em contra partida nos apresenta uma série de vantagens que não são possíveis de aplicar ao modelo centralizado.

Dando vista ao processo no âmbito operacional, um DVCS não é muito desigual a um VCS centralizado, pois os desenvolvedores de um determinado projeto também fazem commit de suas alterações durante o desenvolvimento dos arquivos, da mesma forma quem geram tarballs, patches, atualizam seus arquivos ou analisam seu histórico de alteração.

A grande sacada do modelo distribuído está no fato de não haver um único repositório centralizado, mas sim diversos repositórios espalhados na rede e um repositório para cada desenvolvedor, sob a dependência da ferramenta que está sendo utilizada pelo projeto. Desta maneira, por exemplo, pode-se fazer com que os repositórios "filhos" de um mesmo repositório "pai" compartilhem suas alterações paralelamente entre si.

Em um sistema de controle distribuído, uma conexão permanente com o servidor não é um requisito essencial para o funcionamento do sistema, visto que cada desenvolvedor é responsável por manter seu próprio repositório, dessa forma todas as alterações feitas no longo do desenvolvimento podem passar por um commit local e então somente quando necessário ou solicitado, devem atingir o repositório "pai", ou paralelos a ele, caso exista algum. Incrementado a esse contexto, o "pai" destes repositórios "filhos" podem realizar um commit destas mudanças, no seu repositório “pai, tornando com que suas modificações se tornem públicas para os demais membros do conjunto de repositórios.
Linux: GIT: Controle de Versões Distribuído para Projetos de Software
Figura 3: modelo de controle de versão distribuído
Organizar e acessar os repositórios desta maneira torna os DCVS totalmente aplicáveis para equipes de trabalho que estão geograficamente espalhados pelo mundo, ao qual nem sempre possuem uma conexão estável entre os colaboradores do projeto. Porém isso não quer dizer que uma conexão de rede, ou ao menos uma forma de disseminar estas mudanças não seja importante para o funcionamento de DCVS, acontece que quando um desenvolvedor utiliza um sistema de controle distribuído ele pode ter acesso às informações do repositório "pai", mesmo que não exista uma conexão com o mesmo. No entanto estas informações dizem respeito à última sincronização do repositório local, com o repositório paralelo ou o repositório "pai". Além do mais, o fato de ser distribuído não impede necessariamente que o repositório "filho" replique suas alterações para o repositório "pai", pois se isso não acontecesse, as suas modificações não seriam reproduzidas para os demais colaboradores do projeto.

Podemos citar como um exemplo semelhante de utilização e complexidade desse modelo, as trocas (downloads e uploads) de arquivos na plataforma p2p, onde se torna um pouco mais difícil o controle sobre o acesso aos dados existentes em um determinado repositório. A partir disso é que vem a procura e empregabilidade de algumas ferramentas que possuem funcionalidades específicas capazes de solucionar este tipo de problema.

________________________________________
* DVCS: acrônimo de Distributed Version Control Systems

Página anterior     Próxima página

Páginas do artigo
   1. Introdução a VCS/SCM
   2. Entendendo seu funcionamento
   3. Controle de versionamento centralizado
   4. Controle de versionamento distribuído
   5. Introdução ao Git
   6. Por que o Git?
   7. Utilização básica do Git
   8. Conclusão
Outros artigos deste autor

Proxy Squid com autenticação + Sarg + Webmin

Protegendo o ESB: Conceitos e técnicas de segurança para empresas de serviços web críticos

Transformando seu Ubuntu Hardy em OSX Leopard

Criando dispositivos RAID via software no Linux

Leitura recomendada

RAID 1 em Debian com sistema já instalado

File Globbing ou Englobamento - Introdução

Montando partições NTFS no Fedora 3 através do Captive

Backup fácil de seus arquivos com o Backintime

Montar partições NTFS com Fuse e NTFS-3G no Debian Etch

  
Comentários
[1] Comentário enviado por mbmaciel em 13/02/2010 - 12:34h

Excelente artigo!

[2] Comentário enviado por isaque_alves em 13/02/2010 - 12:44h

Muito bom mesmo... merece nota 10...

[3] Comentário enviado por corvolino em 13/02/2010 - 21:47h

Estava procurando algo sobre git e achei por acaso em destaque aqui,favoritado!

Assim que tiver tempo irei ler tudo com prazer,gratz

[4] Comentário enviado por luizvieira em 15/02/2010 - 06:23h

Excelente artigo. Parabéns!

[5] Comentário enviado por gleudson junior em 17/02/2010 - 15:19h

Pessoal,

Só uma correção no link para download do artigo em PDF.

Link correto:

http://docs.google.com/fileview?id=0B9IwEgNkSODyMTMwMzViYTQtYzJmYi00YTg4LThiMzMtMzgyZmQ3Y2EwMzM0&hl=...


[6] Comentário enviado por albfneto em 19/02/2010 - 12:42h

Muito bom artigo. coloquei nos favoritos, porque uso Sabayon , Gentoo e Funtoo e eles usam muito GIT.

[7] Comentário enviado por HelderC em 25/10/2010 - 10:21h

Excelente artigo.

Só uma correção: Quando você dá o comando: $ sudo apt-get install git giltk

O último pacote que vc disse giltk não seria gitk?

[8] Comentário enviado por gabrielsimas em 11/11/2010 - 16:53h

Rapaz, que artigo excelente, eu estava mesmo precisando de uma elucidação "RFC-Like", meus parabens, estou usando-o como referência. Caso você tenha algum tempo disponível, poderia compartilhar conosco uma atualização deste seu artigo. Você inclusive me encorajou a escrever um artigo sobre Desenvolvimento.

Abraços e sucesso!

[9] Comentário enviado por gleudson junior em 03/01/2011 - 21:32h

@HelderC

vc tem razão! Foi um erro na digitação

@gabrielsimas

Os arquivos ligados ao artigo estão em:

Artigo: https://docs.google.com/uc?export=download&id=0B9IwEgNkSODyN2Y2MjVmYjItY2I4Mi00Nzc1LWJjODktNWZlYTk4O...

Apresentação: https://docs.google.com/uc?export=download&id=0B9d9yvBQOo7EN2I4Nzg3ZjYtYWVjNS00NjRiLWFhNzItY2Q0NDVlO...

[10] Comentário enviado por israelborgess em 17/01/2011 - 01:46h

Gleudson, estou com uma dúvida quanto ao GIT, gostaria se possivel da sua ajuda:
Estou tendo dificuldade em criar grupos de repositorios com as permissões. Teoricamente eu entendi que quando preciso criar um novo projeto eu edito o arquivo gitosis.conf e crio com a seguinte estrutura:

[gitosis]

[group gitosis-admin]
writable = gitosis-admin
members = local@root

[group Desenvolvimento]
writable = Desenvolvimento
members = usuario@term00208n

Sendo que a chave pública o "usuario" com permissão de escrita no diretorio à ser criado terá que estar dentro do diretorio keydir. Entendi tambem que as permissões são realizadas atraves destas chaves públicas de cada usuário. Mas acontece que neste exemplo, digamos que eu tenha outro usuário, usuario2@term001213. Este usuário não teria acesso a este projeto. Porém quando eu clono o diretorio gitosis-admin.git eu consigo logo apos alterar os arquivos deste projeto e executar um "push" logo em seguida. Não tendo permissões para isso!! Não sei se fui claro, mas este usuario2 não deveria ter a permissão neste projeto mas tem!


[11] Comentário enviado por albfneto em 17/08/2013 - 21:53h

sou novo no GIT. estou tentando hospedar minhas isos Sabayon no GITORIUS.

crio o meu diretorio Git loca tudo, no gitorisu ja crier meu repo, agora quero começar a usar, que seria "clonar" meu repo local, para o site Gitorius, mas

o site Gitorius fala para eu executar um comando para configurar o GIT, quando eu faço:

# git checkout master

no meu diretorio local, o git (feito com git init) vem uma mensagem de que o comando acima, só funciona num diretorio de trabalho.


[12] Comentário enviado por morvan em 25/08/2016 - 22:20h

Boa noite.
Gleudson Junior, estava eu à cata de rudimentos sobre o GIT, por estar no rol de cursandos justamente sobre referido software (aquela mania que alguns de nós possuem, de ir ao curso já um pouco munidos, para melhor se situar). Encontrei Elo para este estupendo artigo. Parabéns. Minucioso. Essencial.
Morvan, Usuário GNU-Linux #433640. Seja Legal; seja Livre. Use GNU-Linux.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts