App::gh is an utility helps you operate commands through GitHub's API, currently App::gh is migrating to GitHub API v3.
App::gh is written in Perl, so you might need a cpanminus to install CPAN modules, to install cpanminus:
$ curl -L http://cpanmin.us | perl - --sudo App::cpanminus
Now you have cpanm
, you can install App::gh
$ sudo cpanm https://github.com/c9s/App-gh/zipball/develop
To use App::gh, you need to configure your password or OAuth
token in your .gitconfig
file, just drop the lines below
to setup your password:
[github]
user = c9s
password = your password
To use OAuth token, you need to set your OAuth access token:
[github]
user = c9s
access_token = SHA1601f1889667efaebb33b8c12572835da3f027f78
To clone a repository, use below command form:
$ gh clone [user]/[repo]
$ gh clone [user] [repo]
When cloning repository from others, the default URI is
HTTP, which is read-only
.
When cloning repository from yourself, the default URI is
SSH, which is read & write
.
To specify URI type, you can simply pass options like
--http
for HTTP, --https
for HTTPS, --ssh
for SSH,
--ro
for read-only URI. e.g.:
$ gh clone miyagawa Plack
$ gh clone user repo --http
$ gh clone user repo --https
$ gh clone user repo --ssh
$ gh clone clkao Web-Hippie --ro
Clone from SSH URI:
$ gh clone miyagawa/Plack --ssh
To fetch related remote of forks, you can specify
--forks
option. this command allows you to download
commits from others' fork.
$ gh clone c9s App-gh --forks
To clone repository and set the default remote name instead
of origin
, you can specify --origin
option:
$ gh clone c9s App-gh --origin github
By using the all
command, you can clone all repositories
from an user.
Below is the basic form:
$ gh all [user] [type]
The [type]
can be member
, all
, owner
. if you specify
all
then all repositories including fork projects will be
cloned. if you specify owner
, then only the owner's
projects will be cloned.
For example, to clone all repositories of miyagawa:
$ gh all miyagawa
To clone all repositories that owned by facebook:
$ gh all facebook owner
By specifing --into
option, you can clone these
repositories into a specific directory, for example:
$ gh all facebook owner --into path/to/facebook
$ gh all perl6 --into perl6-stuff
To prompt before cloning each repository:
$ gh all perl6 --prompt
To also fetch tags, you can specify --tags
option:
$ gh all facebook --tags
You can also specify a prefix to each repo:
$ gh all facebook --prefix=facebook-prefix-
To clone these repositories as bared:
$ gh all facebook --bare
To recursively clone submodules:
$ gh all perl6 --recursive
By using the import
command, you can import your git
repository to your GitHub account.
You can simply type below line the upload your project:
$ gh import
To specify remote name for GitHub, you can use --remote
option.
$ gh import --remote github
To search repositories, simply use search
command:
$ gh search keyword
Sometimes you need to update remote refs, branches, tags,
you might run git remote update --prune
, and run pull with
--rebase option to rebase changes on your local branch.
With App::gh, you can do simpler with the update
command.
$ gh update
The command above actually runs:
git remote update --prune
git remote | while read remote; do
git pull --rebase $remote $(git rev-parse --abbrev-ref HEAD)
done
To install this module, run the following commands:
# Makefile.PL needs this
cpan Module::Install::AuthorTests
perl Makefile.PL
make
make test
make install
$ mkdir ~/.zsh/functions
$ cp completion/zsh/_gh ~/.zsh/functions
add ~/.zsh/functions to your fpath
$ vim ~/.zshrc
fpath=(~/.zsh/functions/ $fpath)
please keep the dependency simple and less.
Alexandr Ciornii [email protected]
Breno G. de Oliveira [email protected]
Chris Weyl [email protected]
Fuji, Goro [email protected]
Ryan C. Thompson [email protected]
Tokuhiro Matsuno [email protected]
Yo-An Lin [email protected]
Zak B. Elep [email protected]
c9s [email protected]
chocolateboy [email protected]
mattn [email protected]
tokuhirom [email protected]
tyru [email protected]
xaicron [email protected]
yj [email protected]
After installing, you can find documentation for this module with the perldoc command.
perldoc App::gh
You can also look for information at:
RT, CPAN's request tracker
http://rt.cpan.org/NoAuth/Bugs.html?Dist=App-gh
AnnoCPAN, Annotated CPAN documentation
http://annocpan.org/dist/App-gh
CPAN Ratings
http://cpanratings.perl.org/d/App-gh
Search CPAN
http://search.cpan.org/dist/App-gh/
Copyright (C) 2010 Cornelius
This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.
See http://dev.perl.org/licenses/ for more information.