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

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


Entendendo seu funcionamento



Para entendermos os itens três e quatro deste artigo, precisamos primeiro nos debruçar no que diz respeito ao funcionamento de um sistema de controle de versão, ou seja, devemos explanar os conceitos básicos relacionados ao modelo apresentado.

O controle de versionamento é basicamente dividido em dois segmentos: o repositório, que é responsável pelo armazenamento das informações e a área de trabalho (desktop). O repositório como havia descrito acima, é responsável pelo armazenamento das informações relacionadas ao projeto, em modo persistente no sistema de arquivo escolhido, ou até mesmo em um banco de dados. Nele será guardado todo o histórico de desenvolvimento do projeto e registrado também qualquer tipo de modificação realizada nos arquivos nele alocados.

O responsável pelo desenvolvimento do documento nunca trabalha diretamente nos arquivos do repositório, ele deve antes obter em sua área de trabalho uma cópia local, também chamada de cópia de trabalho (Working Copy) que contém a cópia da última versão de cada arquivo do projeto e esta deverá ser monitorada para identificar qualquer tipo de alteração realizada. Essa área geralmente fica isolada das demais. A comunicação e sincronização entre o repositório e a área de trabalho se dão por duas operações distintas: commit e update, como demonstrado na figura abaixo:
Linux: GIT: Controle de Versões Distribuído para Projetos de Software
Figura 1: topologia básica de um sistema para controle de versão
O commit é responsável por submeter um pacote contendo uma ou mais modificações realizadas durante o desenvolvimento na área de trabalho que é a origem, para seu destino que é o repositório. O update por sua vez faz o trabalho proporcionalmente inverso, isto é, ele envia uma cópia de trabalho da ultima versão estável contida no repositório para a área de trabalho do desenvolvedor.

Cada operação de commit gera uma nova revisão no repositório, registrando sempre todas as modificações realizadas, data e autor. Criando uma alusão a operação, é como se uma revisão fosse uma "fotografia" de todos os arquivos e diretórios em um determinado tempo da evolução do projeto. Essas "fotografias" de tempos passados são armazenadas no repositório e podem ser analisadas ou restauradas sempre que for desejado e o conjunto dessas revisões é justamente o que chamamos de histórico do projeto.

Podemos subdividir o sistema de controle de versão basicamente em dois tipos, de acordo com a maneira que cada um deles garante o controle e o gerenciamento do seu repositório: centralizado e distribuído. Nos CVS centralizados as mudanças são feitas para um repositório central e único, ao contrário dos distribuídos, onde os desenvolvedores trabalham diretamente no próprio repositório.

Então agora podemos dizer que, tanto o controle de versionamento centralizado quanto o distribuído basicamente funcionam sob os repositórios e as áreas de trabalho. A distinção está justamente em como cada uma dessas revisões estão adornadas no processo como um todo.

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

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

Criando dispositivos RAID via software no Linux

Leitura recomendada

Montando partições em memória

Esquemas de particionamento e sistemas de arquivos

Osiris - Integridade do sistema de arquivos

Alta disponibilidade: CentOS 6 - configurando os pacotes DRBD com gfs2 - parte 1

Reparticionando ReiserFS via linha de comando

  
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