Criando repositórios no Github a partir shell

Esse vai ser um post curto, com um dica rápida. É algo que eu uso e acho bem útil, portanto vou compartilhar. Bom, inicialmente, para quem não sabe, o Github é um Web Hosting para projetos que utilizam o sistema de controle de versões git. O Github é excelente e você pode criar projetos open source, ou mesmo pagar pelo serviço para ter repositórios privados. O Github é hoje o padrão em termos de repositório de projetos de código fonte aberto. A maior parte dos grandes projetos open source é desenvolvida por lá, e só para citar alguns dos grandes, estão lá por exemplo: o Linux, o WordPress, vários projetos da fundação Apache,  .NET, Django, Rails, o Docker dentre muitos outros.

Eu uso em diversos projetos meus, a maioria de código fonte aberto. MAS, uma coisa que me incomodava, era a necessidade de entrar na interface web, logar e ter que criar lá o novo repositório. Só depois disso que eu poderia voltar para o terminal e adicionar o repositório remoto com um git remote. De fato, o que eu gostaria mesmo era de fazer tudo do terminal: criar um repositório novo com o git, criar um projeto no github, adicionar o remoto e já dar um git push, sem navegador, sem interface web!

Fazer isso é possível, pois o Github conta com uma API que pode ser utilizada por outras aplicações. Aliás, a bem da verdade, o Github tem GUI’s completas para o Windows e para o MAC, sem contar as muitas outras que existem por ai, mas eu queria simplesmente um comando. Pensando nisso eu fiz o comando eu mesmo com o Python: o código fonte você encontra aqui.

#!/usr/bin/env python
# This Python file uses the following encoding: utf-8

import os

usuario = "seu_usuario"

print 'Defina o título do projeto: '
projectname = raw_input()

print 'Defina a descrição do projeto: '
description = raw_input()

comando = 'curl -u ' + usuario + ' https://api.github.com/user/repos ' + "'" + '-d' + '{"name":"' + projectname + '","description":"' + description + '"}' + "'"

print(comando)
os.system(comando)

Não é ciência de foguete, mas supre a demanda. Basta trocar o “seu_usuario” pelo seu usuário no Github, colocar esse arquivo no PATH do seu Sistema Operacional e o comando ficará disponível na linha de comando. O fluxo de trabalho fica muito simples:

1) crie um repositório do git do zero;

git init

2) adicione os arquivos;

git add -A .

3) dê o primeiro commit;

git commit -am "Primeiro commit"

4) Use o novo comando create_git_repo e crie o repositório no github;

create_git_repo

5) Adicione o remoto;

git remote add origin git@github.com:seu_usuario/seu_projeto.git

6) Envie tudo para o remoto;

git push origin master

Enfim, você não precisa sair do terminal!

Um detalhe importante é que na primeira pergunta o script lhe pede o título do projeto. Coloque o título da forma como vai querer o “seu_proejto.git”, i.e, se quiser com underline já coloque underline, ou qualquer outro caractere.

COMMENTS

  • Instale o hub 🙂
    https://hub.github.com/

    Daí, de dentro do seu projeto git, faça
    hub create
    e voila

    hub tb tem outras facilidades p/ trabalhar com github, por exemplo:

    em vez de git clone https://github.com/usuario/repo (ou git@github.com:usuario/repo), use
    hub clone usuario/repo

    Se usuario for vc mesmo, pode omitir:
    hub clone dotfiles (no meu caso, vai clonar douglasdrumond/dotfiles)

    Melhor ainda, faça um alias (hub é um supergit, ele chama o git por baixo e só adiciona as coisas do github por cima)
    alias git=hub

    git clone dotfiles (uhu!)

    Tb tem operações p interagir c navegador
    hub browse mojombo/jekyll wiki
    (ou git browse … se o alias foi feito)
    abre o navegador na wiki do projeto no github

    Tem muito mais coisa, veja o link que passei no início do comentário.

    • Flavio Barros

      Legal Douglas! Não conhecia esse projeto. Ele faz bem mais coisas que criar repositórios. Eu faço esse esquema há muito tempo e uma época atrás pensei em escrever algo mais completo. Mas o hub parece muito superior! Vlw

  • Eduardo Mendes

    Cara, tomei a liberdade de criar um fork e upar o script para python 3. (No caso da minha distro Arch, o default é o python 3)

    • Flavio Barros

      Excelente Eduardo, open source é isso mesmo. Dá um pull request que eu gostaria de adicionar suas mudanças no meu.

  • […] “MAS, uma coisa que me incomodava, era a necessidade de entrar na interface web, logar e ter que criar lá o novo repositório. Só depois disso que eu poderia voltar para o terminal e adicionar o repositório remoto com um git remote. De fato, o que eu gostaria mesmo era de fazer tudo do terminal: criar um repositório novo com o git, criar um projeto no github, adicionar o remoto e já dar um git push, sem navegador, sem interface web!” [referência: flaviobarros.net] […]

Comments are closed.