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.101 ]

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


Por que o Git?



É totalmente indiscutível que todo projeto de software independente do seu tamanho ou complexidade, necessita hoje de um sistema para versionamento de código. Isso não é mais uma questão de escolha. No momento em que se inicia um projeto de software, mesmo que este esteja sendo manipulado por apenas um desenvolvedor, o controle de versões passa a não ser uma tarefa de teor trivial, ou algo que se possa considerar opcional.

Daí é que surge o grande problema da maioria dos projetos de software: qual VCS utilizar? Grande parte dos desenvolvedores se vê hoje mal acostumados com a utilização e manipulação do CVS, Subversion ou mesmo o SourceSafe da Microsoft. É bem verdade que alguns deles atendem aos requisitos de determinados projetos de forma aceitável, nem sempre satisfatória, mas felizmente hoje podemos contar com ferramentas que oferecem funcionalidades bem mais evoluídas nesse âmbito.

O Linus Torvalds, por exemplo, sofria desse mal: como controlar uma gama enorme de colaborações provenientes de todo o mundo? Nos primórdios a maneira de controle dos códigos se constituía num processo manual, onde se testava e implantava manualmente retalhos de código, mas isso com o passar do tempo tendia a se tornar impraticável, por questões que envolviam o grande esforço de trabalho dos envolvidos no projeto. Quando ele sentiu a necessidade de empregar um sistema para controlar os códigos do núcleo Linux, decidiu de pronto não utilizar nem o CVS, nem o Subversion, por limitações já descritas. Então optou pelo Bitkeeper, que apesar de ser comercial, se enquadrava perfeitamente as necessidades do projeto. No entanto, como explicar e principalmente motivar a comunidade de um software livre a utilizar um aplicativo comercial? Perante essas dificuldades, decidiu então desenvolver seu próprio sistema para controle de versões, optando pelo modelo distribuído, daí nasceu o Git.

Citação: "Ser distribuído significa que você não tem uma localização central que se mantém a par de seus dados, um único lugar, mais importante que qualquer outro lugar. Este modelo centralizado não funciona..."
Linus Torvalds - Palestra ministrada sobre o Git no Tech Talk Google.

Nos sistemas de controle distribuídos (item quatro), cada colaborador do projeto obtém em sua máquina local um clone completo do repositório principal. O que difere o Git das demais ferramentas, é justamente a grande escala de otimização desse repositório. Um dos exemplos clássicos dessa otimização, é o que acontece com alguns projetos, onde a última revisão de código é apenas um pouco maior que todo o código armazenado no repositório, incluindo atualizações e modificações.

A grande jogada está na estrutura desse sistema, onde todo o repositório encontra-se armazenado localmente, como isso o desenvolvedor não tem nenhum problema com permissões de escrita. Está tudo armazenado localmente na sua estação de trabalho. Alem da possibilidade de trabalhar no desenvolvimento do projeto em modo offline, sem necessitar de um acesso a rede nem internet, gerando assim maior comodidade e mobilidade aos colaboradores.

No Git cada desenvolvedor tem o repositório completo em sua estação de trabalho, que também é conhecido como "repositório central", mas que na verdade é apenas um dos clones que foi eleito como "repositório principal" e que caso sofra uma perda irreversível, deve ser substituído por qualquer um desses outros repositórios. Isso mantém viva a arquitetura distribuída do desenvolvimento do software, onde se garante que qualquer um dos repositórios clonados possa ser eleito como "repositório principal".

O que acontece é que ao invés de se fazer um "checkout" e copiar o topo do projeto, o Git permite fazer um "clone" e obter uma cópia completa do repositório. Fazendo com que cada desenvolvedor tenha todo o repositório em sua máquina local e possibilitando a sua substituição caso haja alguma perda de informação.

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

Transformando seu Ubuntu Hardy em OSX Leopard

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

Proxy Squid com autenticação + Sarg + Webmin

Criando dispositivos RAID via software no Linux

Leitura recomendada

Restaurar arquivo ou diretório apagado em file system ext3

Checando seu sistema de arquivos com fsck

Entendendo MBR e sistema de arquivos GNU/Linux

Liberando espaço em disco no Ubuntu Linux

Tunando sistemas de arquivos para GNU/Linux

  
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