Contribuindo para projetos open-source no GitHub

Introdução

Em poucas palavras, o Git é um sistema de controle de versão (SCM) distribuído, criado em 2005 por Linus Torvalds, o criador do Linux. Seu grande diferencial frente às opções existentes (CVS, Subversion, Clearcase etc.) é a última palavra do grifo acima: distribuído. Com ele abre-se mão da necessidade de um servidor remoto que controle o versionamento de arquivos. Cada instalação do Git é seu próprio servidor, que pode interagir com um sem-número de servidores remotos.

O GitHub, por sua vez, é um repositório de software que cresceu a ponto de tornar-se uma rede social de desenvolvimento que, dentre suas muitas funcionalidades, possibilita o colaborativismo, ou seja, permitir que qualquer desenvolvedor contribua com projetos open-source. Tudo usando Git, claro.

Para uma introdução mais extensa – em um bate-papo informal -, recomendo a série de três podcasts publicada no Grok Podcast (Partes 1, 2 e 3) e também outras [referências][#referencias).

É mais simples do que você imagina

Dada a introdução, a partir deste ponto, pressuponho que você tenha os conhecimentos básicos sobre Git e GitHub, ou seja, o Git está instalado em sua máquina, você já sabe como utilizá-lo basicamente (usando a linha de comando e não algum cliente visual) e você já possui uma conta no GitHub. Tudo pronto, basta seguir os passos abaixo:

Utilizarei como exemplo o projeto Twitter Bootstrap, com repositório hospedado no GitHub.

1. Fork

Ao acessar uma página de um projeto no GitHub, basta clicar no botão “Fork”, localizado no canto direito superior. Este comando fará uma cópia do projeto em sua conta no GitHub. A partir deste momento, qualquer alteração que você submeter ao GitHub será enviada apenas para seu projeto.

git-01

2. Clone

Após possuir uma cópia em sua conta, você precisa baixar o projeto para sua máquina (clonar) a fim abrir os arquivos em seu editor favorito. O comando a seguir mostra como fazer este clone:

$ git clone clone-url

clone-url é a URL informada pelo GitHub na página do projeto, localizada na coluna da direta, sob o título “XYZ clone URL”, sendo XYZ a referência ao método de importação. Atualmente existem as opções HTTS, SSH, Subversion. Para mais informações, acesse este link.

git-02
Por exemplo, se você fosse clonar o projeto Twitter Bootstrap via SSH, o comando executado seria $ git clone git@github.com:twbs/bootstrap.git.

3. Branch

Quando um projeto é clonado, você receberá a versão mais atual do branch principal, chamado de master. Um conceito geral do git é o trabalho constante com topic branches, também conhecidos como feature branches. Ou seja, pelo senso comum, você nunca irá trabalhar na versão master de um projeto. Você deverá criar um branch de acordo com o tópico ou a funcionalidade que irá executar.

Por quê?

Desta forma, você terá controle do desenvolvimento e, no caso da necessidade da correção de código ou retorno a versões específicas, você saberá que aquele branch em questão refere-se apenas àquilo que você se propôs a fazer. Para tal, executa-se o comando:

$ git co -b nome-do-branch

sendo co a abreviação de checkout e -b informa que quero criar um branch. Em nosso exemplo, vamos supor que eu queira atualizar a nomenclatura de classes CSS do projeto. Desta forma:

$ git co -b new-css-naming-rules

Pronto, agora você já estará desenvolvendo no branch criado e o master estará são e salvo.

4. Commit

Após fazer as contribuições desejadas, chegou a hora de registrá-las no git (lembre-se que escrevi git e não GitHub). Para isto:

$ git commit -am "Updates the css naming rules"

-a representa que você quer registrar todos (all) os arquivos alterados e m representa que você deseja inserir um comentário, que vem logo em seguida, entre as aspas duplas (Inicie o comentário na terceira pessoa do singular, pois ele representa a ação do commit). Lembre-se de sempre escrever no idioma do projeto para fazer comentários. Um projeto open-source bem organizado sempre utilizará o idioma inglês em sua totalidade (variáveis, métodos, comentários etc.), uma vez que, sendo o Inglês o esperanto da programação, nenhum desenvolvedor gostaria de restringir contribuições apenas de programadores que falassem apenas seu idioma.

5. Push

Agora que o método commit foi executado, o código estará disponível no GitHub, certo? Errado. Se você fez a lição de casa e entendeu como o git funciona, sabe que o commit apenas registrou o envio de nova versão. Agora é necessário fazer o upload das alterações para o GitHub e informar a comunidade sobre sua contribuição. Para isso:

$ git push origin nome-do-branch

O comando push avisa ao git que você deseja enviar sua alteração para o destino original (origin), seguido do branch que deseja enviar. Aí você, curioso que é, deseja saber como o git sabe o que significa origin. Ele mantém um registro dos repositórios existentes. Se você desejar saber, basta executar o comando git remote.

6. Pull Request

Até este momento, você enviou suas alterações para o branch criado em sua conta no GitHub. Agora chegou a hora de avisar o pessoal do Twitter Bootstrap que você tem algo bem interessante para compartilhar. Para tal, ao acessar a página do projeto em sua conta no GitHub, ele automaticamente mostrará o branch que você enviou e mostrará o botão “Pull Request”.

Basta informar na caixa de comentários um detalhamento do quê você fez e porque você fez. O responsável pelo repositório agora poderá simplesmente aceitar sua sugestão, dialogar com você tirando dúvidas ou solicitando alterações ou até mesmo negar sua proposta. E toda a comunidade do GitHub poderá comentar o que você fez.

7. Sincronizando com repositórios remotos

Você deverá, primeiramente, adicionar a referência ao repositório remoto:

$ git remote add nome_repositorio_remoto https://github.com/octocat/repo.git

Agora, quer saber quais são os repositórios remotos existentes?

$ git remote -v

Em seguida, para atualizar o seu conteúdo local com a versão existente no repositório remoto:

$ get fetch nome_repositorio_remoto master

Para sobrescrever todo seu conteúdo local com o conteúdo do repositório remoto:

$ git rebase nome_repositorio_remoto/master

São seis simples passos a serem seguidos e, uma vez executados, tornam-se automáticos e extremamente prazerosos. Na comunidade de desenvolvimento de projetos abertos e até empresas de TI com mentalidade mais contemporânea valorizam muito mais o compartilhamento de conhecimento do que currículos extensos e intermináveis certificações.

Um usuário no GitHub com projetos compartilhados e um perfil social com diversas contribuições e participação ativa demonstra tratar-se de um profissional que busca constante aprendizado e sente-se feliz em compartilhar com o mundo seu conhecimento e descobertas. É claro que exceções existem, mas a regra é esta.

Dicas rápidas sobre git:

  • Para ver todos os branches locais:
    $ git branch
  • Para ver todos os branches locais e remotos:
    $ git branch -r
  • Para copiar um branch remoto que ainda não foi criado em sua máquina:
    $ git checkout -t -b 1-3-stable origin/1-3-stable
    Sendo origin o nome do repositório remoto e 1-3-stable o nome do branch.
  • Para ver todos os repositórios remotos:
    $ git remote

Outras leituras:

Nenhum comentário.

Leave a Reply

Your email address will not be published. Required fields are marked *