Git(){
Software Livre

Por: Yassin Nurmahomed

O git é um sistema de controle de versão distribuído (ou VCS do inglês: “Version Control System”). É caracterizado por ser leve e rápido, é escrito em C reduzindo os overheads associados a linguagens de níveis mais altos.

História

O git surgiu da necessidade de um sistema de controle de versionamento distribuído para o desenvolvimento do kernel Linux, depois que o BitKeeper, o sistema de versionamento anteriormente usado, revogou o uso livre de custos da ferramenta. Linus Torvalds iniciou o desenvolvimento do VCS no dia 3 de Abril de 2005 levando em consideração os seguintes critérios:

  • Usar como exemplo de “o que não fazer”, os sistemas de versionamento atualmente existentes
  • Suporte para um workflow distribuído, semelhante ao do BitKeeper
  • Segurança contra a corrupção de arquivos
  • Alto grau de eficiência

No dia 16 de Abril foi feito o primeiro “commit” do kernel. Linus tinha alcançado os seus objetivos. Atualmente a manutenção do projeto é feita por Junio Hamano, a versão mais recente é a 1.7.11.3 (29/07/2012).

Características


Distribuído

O git é um VCS distribuído, isto significa que em vez de um fazer “checkout” do repositório central, você faz um clone do repositório inteiro. Deste modo todos os desenvolvedores recebem uma cópia do histórico completo do projeto, que poderá ser usada como backup no caso de perda ou corrupção de dados.

Esta descentralização elimina a necessidade de uma conexão de internet a todo o momento, já que os “commits” são todos realizados no repositório local e depois podem ser agregados a um repositório central ou baixados por outros desenvolvedores.

VCS distribuido

VCS distribuído

Ramificações

A característica do git que o diferencia de outros VCS é o modelo de ramificações. Todas as linhas de desenvolvimento são consideradas como ramos, um ramo é um ponteiro para o último commit realizado. A criação, junção e exclusão de ramos de desenvolvimento leva apenas alguns segundos dependendo do tamanho do projeto. Deste modo pode-se criar ramos de desenvolvimento com propósitos diferentes, trocar de contexto de forma simples, experimentar novas ideias sem modificar o ramo principal, etc.

ramificacoes

Ramificações de um projeto gerenciado pelo Git

Workflows


Subversion-style

Neste modelo vários desenvolvedores agregam os “commits” a um servidor central, bem semelhante ao workflow usado no SVN.

Subversion Style

Workflow no estilo Subversion

Integration Manager

Neste modelo apenas uma pessoa, o “Integration Manager”, agrega os “commits” ao repositório principal. Os desenvolvedores clonam do repositório principal. As modificações são salvas nos repositórios pessoais para depois serem agregadas ao repositório principal pelo “Integration Manager”. Este tipo de desenvolvimento é comum em projetos de código aberto e repositórios no GitHub.

Integration Manager

Workflow no estilo Integration Manager

Dictator and Lieutenants

É usado para desenvolvimento de grandes projetos, como o kernel Linux. Neste modelo alguns desenvolvedores (os “Lieutenants”) são individualmente responsáveis por um subsistema do projeto e agregam todas as modificações nele realizadas. O “Dictator” é quem agrega os repositórios dos “Lieutenants” ao repositório principal.

Dictator and lieutenant

Workflow no estilo Dictator and Lieutenants

Github

Github Logo

O GitHub é um site de hospedagem de código fonte e gerenciamento de projetos. Ele disponibiliza diversas ferramentas de gerenciamento: organização de equipes de desenvolvimento, criação e edição de wikis, um sistema refinado de “issue tracking” e revisão de código futurística, entre outros.

Qualquer pessoa pode criar um repositório de graça, desde que o projeto seja de código aberto. São também disponibilizados planos para repositórios privados. Atualmente o GitHub conta com cerca de 6,467,900 repositórios hospedados e 1,958,328 desenvolvedores.

Referências:
youtube.com
Re: Trivia: When did git self-host?
Git
GitHub.com

}