QuickPost: o que significa git?

November 12th, 2008

Hoje me perguntaram no trabalho o que significa 'git'. Respondi: 'não sei'. Mas como nunca me dou por satisfeito em não saber alguma coisa, procurei, óbvio. Achei no FAQ do git e traduzo abaixo:

Por que o nome 'git'?

Parafraseando Linus [Torvalds, criador do Linux e do git]: "Sou um egoísta de ***, e nomeio todos os meus projetos baseados no meu próprio nome. Primeiro 'Linux', e agora 'git'".

('git' é uma gíria inglesa para "idiota, estúpido, ou pessoa que não vale a pena").

Alternativamente, nas próprias palavras de Linus como inventor do git: "git" pode significar qualquer coisa, dependendo do seu humor:

  • Combinação aleatória de 3 letras que é pronunciável, e não usada por algum comando UNIX comum. O fato de ser "get" mal-pronunciado pode ou não ser relevante.
  • Estúpido. Lamentável e indesejado. Simples. Escolha do seu dicionário de gírias.
  • "Global information tracker" (Rastreador de informação global): você está de bom humor, e ele realmente funciona para você. Anjos cantam, e uma luz de repente invade a sala.
  • "Goddamn idiotic truckload of sh*t" (Maldito caminhão de m**a idiota): quando dá pau

O Rails Summit Latin America começou no dia 15/10, no Auditório Elis Regina, no Anhembi. É o maior evento de Ruby on Rails da América Latina, e trouxe alguns dos maiores nomes de Rails do mundo.

Rails Summit - Abertura

O primeiro dia teve a abertura de Gilberto Mautner e Fabio Akita, da Locaweb. Logo em seguida tivemos uma sessão de perguntas e respostas com David Heinemeier Hansson (DHH), o criador do Rails. Ele respondeu perguntas ao vivo da platéia através de videoconferência. Apesar de algumas perguntas parecerem suporte técnico, outras foram bem interessantes, como sobre as novidades do Rails 2.2 e o futuro do framework.

Rails Summit - DHH

Em seguida tivemos o keynote de Chad Fowler. Chad, sem a barba que lhe é característica, falou sobre como ser marcante (remarkable). Segue mais ou menos a linha do seu livro, “My Job Went to India”. Algumas frases da apresentação foram realmente marcantes, como:

Cada dia faça uma coisa melhor que o dia anterior

Você é um produto

Faça barulho

Rails Summit - Chad Fowler

Depois do almoço, na sessão dupla, assisti à palestra de George Malamidis e Danilo Sato, que falaram sobre REST. Foi uma palestra bem teórica, e boa para quem ainda não está familiarizado com o conceito de RESTful Web Services. A palestra paralela, que não assisti, foi do Akita, que pelo que ouvi, foi bem básica, sobre o básico de Rails.

A palestra seguinte foi do Dr. Nic Williams, cujo tema foi “Todos podem contribuir”. Foi bastante similar à do Chad Fowler, motivacional, incentivando todos a contribuir para projetos open source, e falou sobre os ‘segredos’ para se tornar sensacional: aprenda testes unitários, comece um blog, aprenda a criar, e melhore seus conhecimentos. A sessão paralela foi com Carlos Brando, que falou como é trabalhar para uma empresa de fora do Brasil.

Todos voltaram ao auditório principal para o keynote de Chris Wanstrath, do github. Uma palestra também motivacional, muito parecida com a que ele deu no Ruby Hoedown deste ano.

Após a última palestra, começou o Birds of a Feather, que na verdade acabou sendo Lighting Talks, palestras bem rápidas sobre algum assunto relacionado. Infelizmente alguns participantes não captaram a mensagem e falaram sobre coisas totalmente sem relação com Ruby ou Rails, inclusive política (?). As melhores, sem dúvida, foram a do pessoal da Phusion, que demonstraram um interpretador Brainfuck em Ruby, e a do Elomar França, de apenas 17 anos, que deu um show na sua apresentação sobre o grupo de estudos aprendendo-rails.

Assim acabou o primeiro dia de Rails Summit. Hoje tem mais!

Uma das coisas que mais me atraem no git é a facilidade de lidar com branches, ou seja, uma versão do seu repositório que não interfere no principal, que já está funcionando. Geralmente se usa para adicionar novas funcionalidades sem quebrar o código original, podendo fazer commit à vontade.

Pois bem, certas vezes vi alguns screencasts sobre Rails e git onde o prompt do terminal tinha o branch do git atual. Isso é muito útil para saber em que branch você está e lembrar você de fazer um branch em vez de alterar o master. Vi um tweet do Nando com o prompt dele alterado, e resolvi ir atrás. Sinceramente não lembro onde eu achei o código, mas segue ele aqui um pouco adaptado para o meu gosto, usando o bash:

1
2
3
4
5
function parse_git_branch {
git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}

export PS1="\u@\h:\W \$(parse_git_branch)\$ "

Bom, PS1 é a variável de ambiente do bash que define o prompt. Aqui \u é o seu login, \h é o hostname (nome da sua máquina), \W é o diretório atual, e \$ no final é o símbolo de cifrão mesmo. A sacada aqui é o \$(parse_git_branch). Ele faz uma chamada para a função parse_git_branch definida acima.

E o que essa função retorna é justamente o seu branch atual entre parênteses, pegando a saída do comando git branch e usando expressões regulares para formatar a saída usando o sed. O primeiro parâmetro do sed pega o branch atual (que é o que tem o * na frente) e o segundo coloca somente o texto do branch entre parênteses.

Meu prompt ficou assim: