Soluções        Serviços          Atendimento       Governo        Consultoria T.I      Treinamento

Software

Origem: Wikipédia, a enciclopédia livre.
Git
Git logo
Desenvolvedor Linus Torvalds, Junio Hamano
Versão estável 1.7.4.1 (11 de Fevereiro de 2011)
Sistema Operacional POSIX
Gênero(s) Controle de versões
Licença GNU GPLv2
Página oficial http://git-scm.com/
Portal das Tecnologias de informação

Git é um sistema de controle de versão distribuído com ênfase em velocidade. O Git foi inicialmente projetado e desenvolvido por Linus Torvalds para o desenvolvimento do kernel Linux.

Cada diretório de trabalho Git é um repositório com todos os históricos e habilidade total de controle das revisões, não dependente de acesso a uma rede ou a um servidor central.

A manutenção de software do Git é atualmente supervisionada por Junio Hamano. É distribuído sob os termos da versão 2 da GNU General Public License. O Git é um software livre.

Índice

  • 1 Nome
  • 2 História Inicial
  • 3 Desenho
    • 3.1 Características
    • 3.2 Implementação
  • 4 Portabilidade
  • 5 Adoção
    • 5.1 Hospedagem de código fonte
    • 5.2 Projetos que usam Git
  • 6 Ver também
  • 7 Referências
  • 8 Ligações externas

Nome

Linus Torvalds satirizou sobre o nome "git", que é um gíria em inglês britânico para uma pessoa estúpida ou desagradável, dizendo:[1] "Eu sou um egoísta degenerado, e vou batizar todos os meus projetos com meu nome. Primeiro Linux, agora git."[2][3] (Isto é especialmente irônico, pois o próprio Linus resistiu à idéia de escolher o nome Linux para o núcleo do seu sistema operacional.)

O wiki oficial do Git também dá algumas explicações alternativas e um retroacrónimo para o nome, incluindo "Rastreamento Global de Informações (Global Information Tracker)".[2]

História Inicial

O desenvolvimento do Git surgiu após vários desenvolvedores do kernel (núcleo) do Linux decidirem desistir de acessar ao sistema do BitKeeper, que é um software proprietário.[4] O acesso gratuito ao BitKeeper foi removido pelo detentor dos direitos autorais, Larry McVoy, depois de acusar Andrew Tridgell de usar de engenharia reversa nos protocolos do BitKeeper, alegando violação da licença do mesmo. Tridgell demonstrou, em uma apresentação na Linux.Conf.Au, realizada em 2005, que o processo de engenharia reversa utilizado não foi mais do que simplesmente direcionar um telnet para a porta apropriada de um servidor BitKeeper e digitar "help (ajuda)".[5]

Torvalds queria um sistema distribuído que ele pudesse utilizar de forma similar ao BitKeeper (BK), mas nenhum dos sistemas gratuitos disponíveis atendia suas necessidades, particularmente com relação à performance. Segue abaixo uma parte retirada de um e-mail, de 7 de Abril de 2005, escrito enquanto desenvolvia seu primeiro protótipo:[6]

De qualquer forma, os SCVs que olhei dificultam as coisas. Uma delas (a maior delas, na verdade) que estive trabalhando é fazer este processo ser realmente eficiente. Se leva meio minuto para aplicar um patch e ainda lembrar o que mudou, etc (e francamente, isso é rápido para a maioria dos SCVs por aí para um projeto do tamanho do Linux), daí uma série de 250 e-mails (que não é estranho acontecer quando eu sincronizo com o Andrew, por exemplo) demora duas horas. Se um dos patches no meio do processo não é aplicado, as coisas ficam realmente muito feias.

Agora, o BK (BitKeeper) não era um inferno também (na verdade, comparado com todo o resto, o BK é um inferno em velocidade, geralmente em uma ou duas ordens de magnitude), e levou cerca de 10-15 segundos por e-mail quando mesclei meus arquivos com o Andrew. MESMO ASSIM, com o BK isso não era um problema tão grande, visto que mesclas de arquivos de BK←>BK eram tão fáceis, eu nunca precisei das lentas mesclas por e-mail com nenhum dos outros desenvolvedores principais. Então um "mesclador" de um SCV baseado em patches precisaria ser realmente mais rápido que o BK. O que realmente é extremamente difícil.

Então eu estou escrevendo alguns scripts para tentar alinhar tudo mais rápido. Indicações iniciais são de que eu poderei fazer isso tão rápido quanto eu aplico patches, mas para ser franco, estou no máximo com metade pronto, e se eu estiver na direção errada, talvez essa não seja a mais pura verdade. De qualquer forma, a razão de que eu consigo criar tudo isso tão rápido é que meus scripts não serão um SCV, serão tipo um "registro de estado do Linus" bem específico. Isso vai fazer minhas mesclas lineares de patches muito mais eficientes no tempo, e nestas condições, possível.

(Se a aplicação de um patch demora três segundos, até mesmo uma série grande de patches não é um problema: se eu for notificado em um minuto ou dois que falhou na metade do caminho, sem problemas, eu posso então simplesmente arrumar manualmente. É por isso que a latência é crítica - se eu tivesse que fazer as coisas efetivamente "desconectado", eu não poderia, por definição, arrumar as coisas quando problemas aparecessem).

 

Torvalds teve vários critérios para o projeto:

  1. Tomar o CVS como um exemplo do que não fazer; na dúvida, tomar exatamente a decisão contrária. Para citar Torvalds, de certa forma mordendo a língua:
    "Nos primeiros 10 anos de manutenção do kernel, nós literalmente usamos patches de tarballs, o que é muito superior como controle de versão que o CVS, mas eu acabei usando o CVS por 7 anos em uma empresa comercial [Transmeta[7]] e eu odiava de paixão. Quando eu digo que eu odiava de paixão, eu também tenho que dizer que, se houver algum usuário de SVN (Subversion) na platéia, talvez você queira sair. Porque meu ódio pelo CVS significa que eu vejo o Subversion como sendo o projeto iniciado mais sem objetivo de todos os tempos. O slogan do Subversion por um tempo foi "CVS feito [do jeito] certo", ou algo assim, e se você começa com esse slogan, você não vai a lugar nenhum. Não tem como o CVS fazer [do jeito] certo."
  2. Suportar um fluxo distribuído, como o BitKeeper
    "O BitKeeper não foi simplesmente o primeiro sistema de versionamento que eu senti que absolutamente valia a pena, foi também o sistema de controle de versão que me ensinou porque eles tem um objetivo, e como você realmente deve fazer as coisas. Então o Git, de várias formas, mesmo que de uma visão técnica muito diferente do BitKeeper (e isso foi outro objetivo de projeto, porque eu queria deixar claro que não era um plágio do BitKeeper), muitos dos fluxos que usamos no Git vieram diretamente dos fluxos que aprendemos com o BitKeeper."
  3. Várias firmes proteções contra corrompimento de arquivos, seja por acidente ou origem maldosa[8]
  4. Alta performance

Os primeiros três critérios acima eliminam cada controle de versão pré-existente ao Git, exceto pelo Monotone, e o quarto elimina todos. Então, imediatamente depois de liberar a versão 2.6.12-rc2 de desenvolvimento do kernel do Linux, ele começou a desenvolver o seu próprio.

O desenvolvimento do Git começou em 3 de Abril de 2005.[9] O projeto foi anunciado em 6 de Abril,[10] e tornou-se auto-hospedeiro no dia 7 de Abril.[9] A primeira mescla de arquivos (merge) em múltiplos ramos (branches) foi realizado em 18 de Abril.[11] Torvalds alcançou seus objetivos de performance; em 29 de Abril, o recém-nascido Git se tornou referência ao registrar patches para a árvore de desenvolvimento do kernel do Linux na taxa de 6,7 por segundo.[12] No dia 16 de Junho, a entrega do kernel 2.6.12 foi gerenciada pelo Git.[13]

Mesmo que fortemente influenciado pelo BitKeeper, Torvalds deliberadamente tentou evitar abordagens tradicionais, levando à um design único.[14] Ele desenvolveu o sistema até que fosse possível sua utilização por usuários técnicos, entregando então a manutenção do software para Junio Hamano, um dos principais colaboradores do projeto, em 16 de Julho de 2005.[15] Hamano foi responsável pela entrega da versão 1.0 em 21 de dezembro de 2005,[16] e continua como responsável pela manutenção do mesmo.

Desenho

O desenho do Git foi inspirado no BitKeeper e no Monotone.[17][18] Seu desenho original era de um controle de versão de baixo-nível, de forma que outros pudessem desenvolver interfaces em cima dele, como por exemplo o Cogito ou o StGIT.[18] No entanto, o núcleo do projeto do Git se tornou, desde então, um sistema de controle de versão completo que pode ser diretamente utilizado.[19]

Características

O projeto do Git é uma síntese da experiência de Torvalds com a manutenção do desenvolvimento altamente distribuído do projeto do Linux, junto com seu íntimo conhecimento de performance de sistemas de arquivos (conhecimentos adquiridos no mesmo projeto) e a necessidade urgente de produzir um sistema funcional em um curto espaço de tempo. Essas influências o levaram às seguintes escolhas de implementação:

Suporte consistente para desenvolvimentos não-lineares
O Git suporta rápidas criações de ramos (branches) e mesclas (merges), e incluí ferramentas específicas para visualização e navegação de históricos de desenvolvimento não-lineares. Uma suposição intrínseca no Git é que uma mudança será mesclada mais do que é escrita, enquanto é passada por vários revisores.
Desenvolvimento distribuído
Assim como o Darcs, o BitKeeper, o Mercurial, o SVK, o Bazaar e o Monotone, o Git dá a cada desenvolvedor uma cópia local completa de todo o histórico de desenvolvimento, e as mudanças são copiadas de um único repositório para outro. Estas mudanças são importadas como ramos (branches) adicionais de desenvolvimento, e podem sofrer uma mescla (merge) da mesma forma que um ramo de desenvolvimento local.
Compatibilidade com protocolos/sistemas existentes
Repositórios podem ser publicados por HTTP, FTP, rsync, um protocolo Git sobre uma porta conhecida ou por ssh. O Git também tem uma emulação de servidor CVS, o que habilita a existência de clientes CVS e extensões (plugins) em diversos ADIs a utilizar os repositórios Git. O Subversion e o svk podem utilizar os repositórios diretamente com o git-svn.
Manipulação eficiente de projetos extensos
Torvals descreveu o Git como sendo veloz e escalável,[20] e testes de performance realizados pela Mozilla apontaram que o Git é uma ordem de magnitude mais rápido que alguns sistemas de controle de versão. Obter o histórico das revisões salvos em repositórios locais resulta ser duas ordens de magnitude mais rápido que obtê-los de um servidor remoto.[21][22] Um detalhe interessante é que o Git não fica mais lento com o aumento do histórico do projeto.[23]
Autenticação criptográfica do histórico
O histórico do Git é salvo de uma maneira que o nome de uma determinada revisão (um "commit", ou entrega, nos termos do Git) depende de todo o histórico de desenvolvimento que leva até este commit. Uma vez publicado, não é possível mudar as versões antigas sem passar despercebido. A estrutura é similar à uma árvore hash (hash tree), mas com dados adicionais nos nós e nas folhas.[24] (o Mercurial e o Monotone também possuem esta propriedade.)
Modelo baseado em ferramentas
O Git foi modelado como um conjunto de programas escrito em C, e numerosos scripts em shell que encapsulam estes programas.[25] Embora muitos destes scripts foram reescritos em C, como parte de um esforço de portar o Git para o Windows, o modelo básico continua, sendo fácil agrupar seus componentes.[26]
Estratégias de mescla (merge) conectáveis
Como parte de desenho em ferramentas, o Git tem um conjunto bem definido de modelos de uma mescla incompleta, e possuí vários algoritimos para completá-las, culminando em comunicar o usuário que é incapaz de completar o merge automaticamente, sendo necessária uma edição manual.
O lixo se acumula se não for limpo
Abortar operações ou desfazer mudanças irá deixar objetos sem valor pendentes no banco de dados. Existe porém uma pequena fração desejável de objetos no sempre crescente histórico, mas liberar o espaço usando git gc --prune pode ser uma operação lenta.[27]
Empacotamento periódico explícito de objetos
O Git armazena cada novo objeto criado como um arquivo separado. Embora cada arquivo seja individualmente comprimido, isso requer um espaço considerável no disco e é ineficiente. Isto é resolvido com o uso de "pacotes" que armazenam um grande número de objetos em um único arquivo (ou pela rede), comprimidos pelo delta entre eles. Pacotes são comprimidos usando a heurística de que arquivos com o mesmo nome são provavelmente similares, mas que não dependam exatamente disso. Mesmo assim, novos objetos criados (novo histórico adicionado) são gravados um a um, e reempacotamentos periódicos são necessários para manter o espaço de forma eficiente. O Git faz reempacotamentos periódicos automaticamente, mas também é possível fazer reempacotamentos manuais com o comando git gc.

Outra propriedade do Git é que ele salva o estado (snapshot) dos diretórios de arquivos. Os sistemas mais antigos de controle de versão de código fonte, Sistemas de Controle de Código Fonte (SCCF) e Sistemas de Controle de Revisão (SCR), trabalhavam em cima de arquivos individuais, enfatizando o espaço em disco ganho por intercalação de deltas (SCCF) ou por encodificação de deltas (RCS) entre versões (mais similares). Sistemas de controle de versão posteriores mantiveram esta noção de arquivos possuírem uma identidade atráves de múltiplas revisões de um projeto. Porém, Torvalds rejeitou esse conceito.[28] Consequentemente, o Git não salva relacionamentos entre revisão de arquivos em nenhum nível abaixo da árvore de diretório do código fonte.

Relacionamentos inexplícitos de revisão remete à consequências significativas:

  • É pouco mais dispendioso examinar o hitório de um único arquivo do que o histório de todo o projeto.[29] Para obter o histórico de mudanças de um arquivo, Git precisa caminhar pelo histórico global e então verificar qual mudança modificou aquele arquivo. Este método de examinar o histório faz, porém, com que o Git produza igual eficiência em mostrar um histórico de mudanças de um ou de vários arquivos arbitrários. Por exemplo, é comum o caso de um subdiretório da árvore de arquivos fontes mais um arquivo global de cabeçalho associado.
  • Renomeamento de arquivos são feitos de forma implícita. Uma queixa comum no CVS é que este usa o nome do arquivo para identificar o seu histórico de revisões. Então, não é possível mover ou renomear um arquivo sem interromper ou renomear seu histório, o que, consequentemente, faz com que o histórica seja impreciso. A maioria dos controles de revisão pós-CVS resolve este probelam por dar um tipo de identidade por nome único invariável para cada arquivo (um tipo de nó-i) que continua mesmo após renomamentos. O Git não salva este tipo de identificador, e isso é uma vantagem alegada por Torvalds.[30][31] Arquivos de código fonte, às vezes, são divididos, mesclados ou simplesmente renomeados.[32] Salvar todas estas mudanças como simples renomeios poderia congelar uma descrição imprecisa do que aconteceu na história real do mesmo (que é imutável). Git resolve este problema por detectar renomeios enquanto navega pela história dos estados invés de gravá-los quando o estado é criado.[33] (Para ser breve, dado um arquivo numa revisão N, um arquivo de mesmo nome numa revisão N-1 é seu ancestral comum. Porém, quando não existe arquivo com um nome parecido na revisão N-1, o Git procura por um arquivo que existiu apenas na revisão N-1 e que era similar ao arquivo novo). No entanto, não é necessário mais tempo de processamento intensivo toda vez que o histórico é revisado. Existem também numerosas opções para ajustar estas heurísticas.

O Git implemente várias estratégias de merge (mescla de arquivos); uma não padrão pode ser selecionada durante um merge:[34]

  • resolve (resolver): o tradicional algoritmo de merge em três vias.
  • recursive (recursivo): Este é o padrão quando baixando ou mesclando um branch, é uma variante do algortimo de mescla em três vias. "Quando há mais de um ancestral comum que pode ser usado em um merge de três vias, cria-se uma árvore de merge dos ancestrais comuns e usa-se isso como a árvoe de referência para o merge em três vias. Isto têm resultado em menor número de conflitos em merges sem causar merges errados por testes realizados em merges tirados do histórico de desenvolvimento do kernel do Linux 2.6. Adicionalmente pode detectar e lidar com merges involvendo renomeamentos."[35]
  • octopus (polvo): Este é o padrão quando efetuando merge em mais de duas heads.

Implementação

Como o BitKeeper, o Git não usa um servidor centralizado. Entretanto, os primórdios do Git não são inerentemente um sistema de gerenciamento de versão. Torvalds explica:[36]

Você pode ver o git apenas como um sistema de arquivos por vários motivos — ele é um armazenamento endereçável de conteúdo (SCM), e tem o conceito de versionamento, mas eu realmente realmente o modelei vindo de um problema no ponto de vista de um sistema de arquivos (ei, eu faço núcleos de sistemas operacionais), e na verdade eu não tenho absolutamente nenhum interesse em criar um sistema tradicional de SCM.

 

Apesar de suas intenções, o Git agora possuí toda a coleção de funcionalidade de um SCM tradicional.[37]

Git possu duas estruturas de dados: um índice mutável que provê informações sobre o diretório de trabalho e a próxima revisão a ser cometida; e um banco de dados de objetos de acréscimo imutável.

O banco de dados de objetos contém quatro tipos de objetos:

  • Um objeto blob é o conteúdo de um arquivo. Estes objetos não possuem nomes, datações ou outros metadados.
  • Um objeto tree (árvore) é o equivalente à um diretório. Ele contém um lista de nomes de arquivos, cada um com bits que informam o tipo e o nome do blob, da árvore, ligação simbólica ou conteúdo de diretório que pertence à este nome. Este objeto descreve o estado da árvore de diretório.
  • Um objeto commit (entrega) liga árvores de objetos junto com um histório. Ele contém o nome de uma árvore de objetos (da raiz de diretórios), datação, uma mensagem de log, e os nomes de zero ou mais objetos-pai de commit.
  • Um objeto tag (rótulo) é um invólucro que referencia outros objetos e pode conter metadados adicionais relacionados à outro objeto. Em geral, é usado para armazenar uma assinatura digital de um objeto commit correspondente à aquela release de dados que estão sendo rastreados pelo Git.

O índice serve como um ponto de conexão entre o banco de dados de objetos e a àrvore de trabalho.

Cada objeto é identificado por um hash SHA-1 de seu conteúdo. O Git computa o hash e usa ele valor como nome para o objeto. O objeto é colocado em um diretório que corresponde aos primeiros dois caracteres deste hash. O resto do hash é usado como nome de arquivo para cada objeto.

O Git armazena cada revisão do arquivo com um único objeto blob. Os relacionamentos entre os blobs podem ser encontrados por examinar à arvore de objetos commit. Objetos recém adicionados são armazenados inteiramento usando compressão do zlib. Isto pode consumir uma grande quantidade de espaço de diso rapidamente. Desta forma, os objetos são combinados em pacotes, que são comprimidos em delta para salvar espaço, gravando blobs como mudanças relativas à outros blobs.

Servidores Git tipicamente escutam a porta TCP/IP 9418.[38]

Portabilidade

O Git está primariamente desenvolvido para Linux, mas pode ser usados em outros sistemas operionais baseados no Unix, incluindo o BSD, o Solaris e o Darwin. O Git é extremamente rápido em arquiteturas POSIX como o Linux.[39]

O Git também roda no Microsoft Windows. Existem duas variantes:

  • Uma adaptação nativa para Microsoft Windows, chamada msysgit (usando MSYS da MinGW). Ao passo que é relativamente mais vagaroso que a versão para o Linux,[40] ele é aceitavelmente rápido[41] e é notoriamente usado em produção, com apenas algumas dificuldade menores.[42] Em particular, alguns comandos ainda não estão disponíveis nas GUIs, e precisam ser chamadas por linha de comando.
  • O git também roda em cima do Cygwin (uma camada de emulação POSIX),[43] embora é notoriamente mais lento, especialmente para comando escritos em shell script.[44] Isto é causado principalmente pelo alto custo realizado pelo comando fork emulado pelo Cygwin. Entretanto, as recentes reescritas de vários comandos do Git (originalmente escritas em sheel script) para a linguagem C, resultou em um ganho significativo de performance no Windows.[45]

Outras alternativas para rodar o Git incluí:

  • git-cvsserver (que emula um servidor CVS, permitindo seu uso em cliente CVS para Windows):[46]
  • Ambientes de desenvolvimento baseados em Eclipse para Git, baseado em implementações puras em Java no interior do Git: egit
  • Suporte do NetBeans para o Git está em desenvolvimento [2] e está também disponível pelo plugin NbGit
  • O TortoiseGit, Git-Cheetah e o Git Extensions são extensões clientes para o Gerenciado de Arquivos do Windows, assim como versões independentes de GUI e o plugin para Visual Studio. O Git Source Control Provider é outro software gratuito em forma de plugin para o Visual Studio que exibe o status do projeto Git no 'solution explorer'.
  • IntelliJ IDEA Versão 8.1 agora suporta o Git por um plugin embutido: Intellij Version Control Systems Integration
  • Xcode 4 - assim como a versão 4 de demonstração, o git está disponível como parte da IDE [3]
  • Git# é uma implementação .Net/Mono do git.

Refaturar as operações de mais baixo nível em bibliotecas poderia, teoricamente, permitir a reimplementação do componente de níveis mais altos para o Windows sem reescrever o resto.[47]

Adoção

Hospedagem de código fonte

Os seguintes websites provêm hospedagem grautuita de código fonte para repositório Git:[48]

  • BerliOS
  • GitHub
  • Gitorious
  • Sourceforge
  • GNU Savannah
  • Project Kenai
  • Unfuddle
  • SourceRepo
  • Google Code

Projetos que usam Git

Um grande número de projetos de software de alto-padrão estão utilizando agora o Git como controle de revisão::[49]

  • Amarok[50][51]
  • Android[52]
  • Arch Linux
  • Aquamacs Emacs
  • BlueZ[53]
  • Btrfs[54]
  • Clojure[55]
  • CakePHP[56]
  • cURL[57]
  • Debian[58]
  • Digg[59]
  • DragonFly BSD[60]
  • Eclipse[61]
  • Elinks[62]
  • Fedora
  • FFmpeg [63]
  • Freenet[64]
  • FreeSWITCH[65]
  • git[66]
  • GIMP[67]
  • GNOME[68][69]
  • GPM[70]
  • GStreamer[71]
  • gThumb[72]
  • GTK+[73]
  • Hurd[74]
  • jQuery[75]
  • Laika (EHR testing framework)[76]
  • LilyPond (music typesetting)[77]
  • Linux kernel
  • Linux Mint[78][79]
  • LMMS[80]
  • Maemo[81]
  • MeeGo[82]
  • Merb[83]
  • MicroEMACS
  • Mono[84][85]
  • MooTools[86]
  • One Laptop Per Child (OLPC)[87]
  • OpenFOAM[88]
  • openSUSE[89]
  • Penumbra: Overture [90][91]
  • Perl[92]
  • phpBB[93]
  • Prototype.js[94]
  • Qt[95]
  • Reddit[96]
  • rsync[97]
  • Ruby on Rails[98]
  • Samba[99]
  • SproutCore[100]
  • Starlink[101]
  • Sugar[102]
  • SWI-Prolog[103]
  • Trilinos
  • VLC[104]
  • VTK[105]
  • Wine[106]
  • Xfce[107]
  • Xiph[108]
  • X.org Server[109]
  • x264[104]
  • Yahoo! UI Library[110]
  • Zend Framework[111]

Predefinição:Colend

O projeto KDE começou a migrar para o Git, o Amarok completou sua migração[112][113] e logo também a do Phonon.[114] A comunidade do Drupal recentemente anúnciou planos para migrar o desenvolvimento para Git.[115]

Ver também

  • Distributed revision control
  • List of revision control software
  • Comparison of revision control software
  • Comparison of open source software hosting facilities
  • Repo (Script)

Referências

  1. (2005-04-19) "Depois de controvérsia, Torvalds começa trabalhar no git". InfoWorld. ISSN 0199-6649.
  2. a b GitFaq: Porque o nome 'git'?. Git.or.cz. Página visitada em 2009-06-16.
  3. Depois de controvérsia, Torvalds começa trabalhar no git. PC World (2005-04-20). "Torvalds parecia estar ciente que sua decisão de desistir do BitKeeper também seria controversa. Quando perguntado como chamaria seu novo software, ele respondeu com a gíria inglesa "git", que signifa "uma pessoa podre". 'Eu sou um egoísta degenerado, e vou batizar todos os meus projetos com meu nome. Primeiro Linux, agora git.'"
  4. ↑ Feature: No More Free BitKeeper | KernelTrap.org
  5. Jonathan Corbet. (2005-04-20). "Como Tridge usou engenharia reversa no BitKeeper". Linux Weekly News.
  6. Linus Torvalds (2005-04-07). "Re: Kernel SCM saga..". linux-kernel mailing list.
  7. Linus Torvalds (2005-10-31). "Re: git contra o CVS (contra o bk)". git mailing list.
  8. Linus Torvalds (2007-06-10). "Re: fatal: aumento inconsistente grave". git mailing list. Uma breve descrição dos objetivos de integridade de dados no projeto do Git.
  9. a b Linus Torvalds (2007-02-27). "Re: Trivia: When did git self-host?". git mailing list.
  10. Linus Torvalds (2005-04-06). "Kernel SCM saga..". linux-kernel mailing list.
  11. Linus Torvalds (2005-04-17). "First ever real kernel git merge!". git mailing list.
  12. Matt Mackall (2005-04-29). "Mercurial 0.4b vs git patchbomb benchmark". git mailing list.
  13. Linus Torvalds (2005-06-17). "Linux 2.6.12". git-commits-head mailing list.
  14. Linus Torvalds (2006-10-20). "Re: VCS comparison table". git mailing list. A discussion of Git vs. BitKeeper
  15. Linus Torvalds (2005-07-27). "Meet the new maintainer…". git mailing list.
  16. Junio C Hamano (2005-12-21). "ANNOUNCE: GIT 1.0.0". git mailing list.
  17. Linus Torvalds (2006-05-05). "Re: [ANNOUNCE] Git wiki". linux-kernel mailing list. "Some historical background" on git's predecessors
  18. a b Linus Torvalds (2005-04-08). "Re: Kernel SCM saga". linux-kernel mailing list. Visitado em 2008-02-20.
  19. Linus Torvalds (2006-03-23). "Re: Errors GITtifying GCC and Binutils". git mailing list.
  20. Linus Torvalds (2006-10-19). "Re: VCS comparison table". git mailing list.
  21. jst. (2006-11-30). "bzr/hg/git performance". Jst's Blog., benchmarking "git diff" against "bzr diff", and finding the former 100x faster in some cases.
  22. ↑ Roland Dreier (2006-11-13). Oh what a relief it is., observing that "git log" is 100x faster than "svn log" because the latter has to contact a remote server.
  23. Robert Fendt. DVCS Round-Up: One System to Rule Them All?—Part 2. [S.l.]: Linux Foundation, 2009-01-21.. Página visitada em 2009-06-25.
  24. Git User's Manual - Git Concepts - Trust (2006-10-18).
  25. Linus Torvalds. "Re: VCS comparison table". git mailing list. Visitado em 2009-04-10., describing Git's script-oriented design
  26. ↑ iabervon (2005-12-22). Git rocks!., praising Git's scriptability
  27. Git User's Manual (2007-08-05).
  28. Linus Torvalds (2005-04-10). "Re: more git updates..". linux-kernel mailing list.
  29. Bruno Haible (2007-02-11). "how to speed up "git log"?". git mailing list.
  30. Linus Torvalds (2006-03-01). "Re: impure renames / history tracking". git mailing list.
  31. Junio C Hamano (2006-03-24). "Re: Errors GITtifying GCC and Binutils". git mailing list.
  32. Junio C Hamano (2006-03-23). "Re: Errors GITtifying GCC and Binutils". git mailing list.
  33. Linus Torvalds (2006-11-28). "Re: git and bzr". git mailing list., on using git-blame to show code moved between source files
  34. ↑ Linus Torvalds (2007-07-18). git-merge(1).
  35. ↑ Linus Torvalds (2007-07-18). CrissCrossMerge.
  36. Linus Torvalds (2005-04-10). "Re: more git updates…". linux-kernel mailing list.
  37. Linus Torvalds (2006-03-23). "Re: Errors GITtifying GCC and Binutils". git mailing list.
  38. Exporting a git repository via the git protocol. Kernel.org. Página visitada em 2009-11-17.
  39. Stenback, Johnny. (2006-11-30). "bzr/hg/git performance". Jst's Blog.
  40. Johannes Schindelin (2007-10-14). "Re: Switching from CVS to GIT". git mailing list. A subjective comparison of Git under Windows and Linux on the same system.
  41. Martin Langhoff (2007-10-15). "Re: Switching from CVS to GIT". git mailing list. Experience running msysgit on Windows
  42. Johannes Sixt (2007-10-15). "Re: Switching from CVS to GIT". git mailing list.
  43. Shawn Pearce (2006-10-24). "Re: VCS comparison table". git mailing list.
  44. Johannes Schindelin (2007-01-01). "Re: [PATCH] Speedup recursive by flushing index only once for all". git mailing list.
  45. Shawn O. Pearce (2007-09-18). "[PATCH 0/5] More builtin-fetch fixes". git mailing list.
  46. git-cvsserver(1). Kernel.org (2009-04-02). Página visitada em 2009-06-15.
  47. Johannes Schindelin (2006-03-02). "Re: windows problems summary". git mailing list.
  48. ↑ Git Hosting - Git SCM Wiki
  49. Projects that use Git for their source code management. Página visitada em 2008-02-20.
  50. ↑ Getting Started/Sources/Amarok Git Tutorial - KDE TechBase
  51. ↑ amarok in kde-developers - Gitorious
  52. ↑ Usando Repo e o Git
  53. ↑ BlueZ » Acessar o GIT
  54. Btrfs source repositories - btrfs Wiki. Btrfs.wiki.kernel.org. Página visitada em 2009-06-15.
  55. ↑ http://github.com/richhickey/clojure
  56. ↑ http://cakephp.lighthouseapp.com/projects/42648/home
  57. ↑ http://curl.haxx.se/
  58. ↑ git.debian.org Git
  59. ↑ digg.git - part 1 | Digg About
  60. ↑ TypicalGitUsage - dragonflywiki
  61. ↑ WTP Incubator using Git
  62. ↑ Download
  63. Get FFmpeg. Ffmpeg.org. Página visitada em 2009-06-15.
  64. ↑ http://github.com/freenet/
  65. ↑ http://freeswitch.org/
  66. Git - Fast Version Control System. Página visitada em 2010-04-24.
  67. ↑ The GIMP Development Team. GIMP Developer Resources. Página visitada em 2010-08-07.
  68. ↑ Lucas Rocha. Mailing List Announcement. Página visitada em 2009-03-19. "GNOME to migrate to git version control system…"
  69. ↑ Git - GNOME Live!
  70. ↑ http://www.nico.schottelius.org/software/gpm/
  71. ↑ gstreamer Wiki - GitDeveloperGuidelines
  72. ↑ gthumb - GNOME Live!
  73. ↑ GTK+ - Download
  74. ↑ source repositories
  75. ↑ Downloading jQuery - jQuery JavaScript Library
  76. ↑ CCHIT's laika at master - GitHub
  77. ↑ LilyPond, music notation for everyone
  78. ↑ The Linux Mint Blog » Blog Archive » Mint to use Launchpad for translations, bugs, blueprints and github for code hosting and version control
  79. ↑ DistroWatch.com: Put the fun back into computing. Use Linux, BSD
  80. ↑ LMMS - Linux MultiMedia Studio
  81. ↑ Maemo - Gitorious
  82. ↑ MeeGo - Gitorious
  83. ↑ Ruby on Rails: Merb
  84. ↑ GitFAQ - Mono
  85. ↑ Mono Project - GitHub
  86. ↑ MooTools - a compact javascript framework
  87. ↑ OLPC wiki. Project hosting. Página visitada em 2008-02-20.
  88. ↑ http://www.openfoam.com/download/git.php
  89. ↑ openSUSE - Gitorious
  90. FrictionalGames' PenumbraOverture at master. GitHub.
  91. Penumbra: Overture goes Open Source!. Frictional Games.
  92. ↑ Léon Brocard. Mailing List Announcement. Página visitada em 2008-12-22. "The Perl Foundation has migrated Perl 5 to the Git version control system…"
  93. ↑ phpBB (2010-03-07). phpBB moves source code versioning from Subversion to Git. phpBB Group. Página visitada em 2010-03-07.
  94. ↑ Prototype JavaScript framework: Contribute
  95. Qt now open for community contributions (2009-05-11). Página visitada em 2009-06-22.
  96. Reddit Goes Open Source. Página visitada em 2010-02-26.
  97. ↑ http://gitweb.samba.org/?p=rsync.git
  98. "Rails is moving from SVN to Git". Página visitada em 2008-04-03.
  99. ↑ Using Git for Samba Development - SambaWiki
  100. ↑ SproutCore Documentation
  101. ↑ [1]
  102. ↑ Sugar Labs project hosting
  103. ↑ Accessing SWI-Prolog source via <a href="http://git-scm.com/">GIT</a>
  104. a b Git - VideoLAN Wiki
  105. ↑ http://vtk.org/gitweb
  106. ↑ GitWine - The Official Wine Wiki
  107. ↑ Xfce Git
  108. ↑ Xiph Git
  109. ↑ X.Org Wiki - Development/git
  110. YUI 2 and YUI 3 Source Code Now on GitHub. Página visitada em 2009-01-20.
  111. ↑ http://git.zendframework.com/?a=summary&p=zf
  112. ↑ life at the end of the universe » we’re testing the water for everyone
  113. ↑ KDE gets millionth commit - The H Open Source: News and Features
  114. ↑ (Kde-scm-interest) Minutes from Today's KDE → Git BoF, Ian Monroe, Wed July 8 18:43:42 CEST 2009
  115. ↑ Migrating Drupal.org to Git

Ligações externas

  • Site oficial do Git (en)
  • An introduction to git-svn for Subversion/SVK users and deserters, artigo de Sam Vilain
  • Git Fácil (en) - um script wrapper para o Git, apresentando uma interface simplifcada, modelada para ser mais acessível para usuários de outros sistemas de controle de revisão.
  • Git por exemplos (en) - simples passada pelos comandos mais comuns do git
  • Git para cientistas da computação (en) expplica como o Git funciona conceitualmente
  • Git para usuário do Subversion (en)
  • Git Magic (en) - uma lista compreensiva de dicas e truques para o Git, popularmente conhecido como "mágica". Descreve algumas das das funções menos conhecidas do Git.
  • Porque o Git é Melhor Que X (en) - site evangelista comparando o Git com o Mercurial, o Bazaar, o Subversion e o Perforce
  • Referência rápida para o Git (en)
  • Tudo sobre o Git em uma página (en) - uma página cobrindo tudo sobre o Git, começando com a teoria até na prática, com exemplos de utilização, a edição.
Obtida de "http://pt.wikipedia.org/w/index.php?title=Git&oldid=27809017"

MAIS INFORMAÇÕES DO SETOR DE SOFTWARE

Microsoft SharePoint Workspace

article thumbnail

Título a ser usado para criar uma ligação interna é Microsoft SharePoint Workspace. Micr [ ... ]


Nanotecnologia do carbono

article thumbnail

A nanotecnologia do carbono é o ramo da nanotecnologia que estuda a manipulação de estruturas de  [ ... ]


Sistemas dinâmicos

article thumbnail

O atrator de Lorenz é um exemplo de sistema dinâmico não-linear. O estudo deste sistema incen [ ... ]


Sistema de informação de gestão

Sistema de informação de gestão ou sistema de informações gerenciais (SIG; do inglês, manageme [ ... ]


Symfony

article thumbnail

Symfony

Projeto padrão do Symfony Desenvolvedor Sensio Labs Versão está [ ... ]


Rede de computadores

article thumbnail

A Wikipédia possui o portal:
Portal das tecnologias de informação Uma rede de comp [ ... ]


Outsourcing em gestão

O outsourcing em gestão é uma ferramenta administrativa em que o terceririzado realiza a ativida [ ... ]


Hacker

article thumbnail


Originalmente, e para certos programadores, hackers (singular: hacker) são indivíduos que elabo [ ... ]


Gestão de riscos em TI

A Gestão de riscos (termo também conhecido como Risk Management) é um processo/disciplina util [ ... ]


Governança em T.I (Governança corporativa)

Governança corporativa (português brasileiro) ou governo das sociedades ou das empresas (portuguê [ ... ]


Steve Ballmer

article thumbnail

Steve Ballmer Nome completo Steven Anthony Ballmer Nascimento 24 de Março [ ... ]


Programação extrema

Programação extrema (do inglês eXtreme Programming), ou simplesmente XP, é uma metodologia ág [ ... ]


Django (framework web)

Django Desenvolvedor Lawrence Journal-World Lançado em 21 de Julho de 2005  [ ... ]


Linux

article thumbnail


Linux
Tux, a mascote do Linux Modelo: Software Livre Família do SO: bas [ ... ]


Teoria de sistemas

A teoria de sistemas estuda, de modo interdisciplinar, a organização abstrata de fenômenos, indep [ ... ]


Paradigmas de programação

Um paradigma de programação fornece e determina a visão que o programador possui sobre a estrut [ ... ]


Modelo V

article thumbnail

The V-model of the Systems Engineering Process.[1] O Modelo V é um modelo conceitual de  [ ... ]


Segurança da informação

article thumbnail

A Wikipédia possui o portal:
Portal das tecnologias de informação A segurança da  [ ... ]


COA - Control Oriented Architecture

Control Oriented Architecture - COA é uma arquitetura de camadas de controle que permite configur [ ... ]


Struts framework

Struts é um framework de desenvolvimento da camada controladora, numa estrutura seguindo o padrã [ ... ]


Dispositivo móvel

Um dispositivo móvel, designado popularmente em inglês por handheld é um computador de bolso ha [ ... ]


Análise de pontos de função

Análise de Pontos de Função (APF) é uma técnica para a medição de projetos de desenvolvimen [ ... ]


Teste de penetração

article thumbnail

O teste de penetração é um método que avalia a segurança de um sistema de computador ou de um [ ... ]


Tecnologia da informação

article thumbnail

Mapa com os gastos em TI em todo o planeta Tecnologia da Informação (TI) É a área de  [ ... ]


Arquitetura de dados

Arquitetura de dados é a estrutura dos componentes de dados de uma organização - considerados sob [ ... ]


ITILv3

A versão 3 da biblioteca ITIL foi lançada mundialmente em maio de 2007 como uma atualização comp [ ... ]


Git - sistema de controle de versão

article thumbnail

Origem: Wikipédia, a enciclopédia livre. Git Desenvolvedor Linus Torvalds, Ju [ ... ]


Business Intelligence - Inteligência empresarial

Inteligência empresarial (em inglês Business Intelligence), refere-se ao processo de coleta, orga [ ... ]


Windows Server 2008 R2

article thumbnail

O Windows Server 2008 R2 é um sistema operacional de servidor, produzido pela Microsoft. Foi libe [ ... ]


Novas tecnologias de informação e comunicação

Comunicação Novas tecnologias de informação e comunicação Tipos Social • M [ ... ]


Algoritmos

article thumbnail

Um algoritmo é uma sequência finita de instruções bem definidas e não ambíguas, cada uma das q [ ... ]


Sistemas complexos

Um sistema é dito ser um sistema complexo quando suas propriedades não são uma consequência natu [ ... ]


Software aplicativo

article thumbnail


O OpenOffice.org é um exemplo de um aplicativo. O GNU Image Manipulation Program (G [ ... ]


Apple

article thumbnail


Apple Tipo Empresa cotada em bolsa (NASDAQ: AAPL, LSE: 0HDZ, FWB: APC) Fu [ ... ]


Microsoft Office

article thumbnail

Microsoft Office Desenvolvedor Microsoft Plataforma x86 e x64 Lançad [ ... ]


Administração de dados

Administração de dados é a função responsável por desenvolver e administrar de modo central [ ... ]


Plone

article thumbnail

Plone

Screenshot da instalação padrão Desenvolvedor Alan Runyan, Alexander L [ ... ]


Licenças Microsoft

Microsoft Product Activation O Microsoft Product Activation (MPA, em português, traduz. literal.:  [ ... ]


Blog corporativo

Blogs Corporativos podem ser traduzidos em: uso de blogs dentro do cotidiano das empresas. O Blog  [ ... ]


Melhoria de Processos do Software Brasileiro

O MPS.BR ou Melhoria de Processos do Software Brasileiro é simultaneamente um movimento para a melh [ ... ]


Tecnologia educacional

article thumbnail

A Wikipédia possui o portal:
Portal de educação As Tecnologias educacionais são [ ... ]


Firewall

article thumbnail

Firewall separando redes LAN e WAN A Wikipédia possui o portal:
Portal das tecno [ ... ]


Eclipse

article thumbnail


Eclipse é um IDE desenvolvido em Java, seguindo o modelo open source de desenvolvimento de softw [ ... ]


Processo de desenvolvimento de software

Um processo de desenvolvimento de software é um conjunto de atividades, parcialmente ordenadas, c [ ... ]


Software colaborativo

Software colaborativo (ou groupware) é um software que apoia o trabalho em grupo, coletivamente.  [ ... ]


Rede complexa

Rede Complexa é uma forma de modelar a natureza onde as propriedades de um elemento são resumidas [ ... ]


ArgoUML

ArgoUML é uma aplicação open source que usa UML para modelar o desenho de software de computado [ ... ]


Hardware

O hardware pode ser definido como um termo geral para equipamentos como chaves, fechaduras, dobra [ ... ]


JavaScript


JavaScript Paradigma Multi-paradigma: com base em protótipo funcional
imperativo
scr [ ... ]


Seis Sigma

article thumbnail

Símbolo comumente usado do Seis Sigma
Seis Sigma ou Six Sigma (em inglês) é um conjunto [ ... ]


Artigos Relacionados

Pluriverso - Inteligência em Tecnologia

Pluriverso - Inteligência em Tecnologia


Ed.Centro Sul, 2°Andar, SCIA, Qd. 14, Conj. 07, Lt 1, S. Ind.
CEP: 71.250-135, Brasília-DF.  
Como Chegar
| Atendimento  


+55 (61) 4141.5555

Serviços

Desenvolvimento de Software
Oursourcing de T.I
Consultoria em Tecnologia
Licitação com o Governo

Produtos

ERP, CRM, Colaboração
Cloud Computing

Soluções
Soluções em Outsourcing de Tecnologia
Integração de Software
Avaliação de nível tecnológico
Cálculo de custos de T.I
Softwares customizados


Porque escolher a Pluriverso

Blog Corporativo
Blog do Software

Conheça a Pluriverso
quem somos
verticais de atuação
portifólio
casos de sucesso

Atendimento
contatos
sala de imprensa
como chegar
Trabalhe conosco

desenvolvimento de software