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.
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.
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
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)
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] […]