A Supercharged Git/Shell Autocompleter with GitHub Integration.
Although the standard Git command line is a great tool to manage your Git-powered repos, it can be tough to remember the usage of:
- 150+ porcelain and plumbing commands
- Countless command-specific options
- Resources such as tags and branches
Out of the box, the Git command line does not provide integration with GitHub, forcing users to toggle between command line and browser.
gitsome
aims to supercharge the standard git/shell interface by focusing on:
- Improving ease-of-use
- Increasing productivity
gitsome
provides direct integration with GitHub.
Not all GitHub workflows work well in a terminal; gitsome
attempts to target those that do.
The GitHub integrated commands work with ALL shells:
Running the optional shell:
$ gitsome
Enables autocompletion and provides interactive help for the following:
- Git commands
- Git options
- Git branches, tags, etc
- Git-Extras commands
- GitHub integration commands
gitsome
autocompletes the following:
- Shell commands
- Files and directories
- Environment variables
- Man pages
- Python
gitsome
supports Fish-style auto-suggestions. Use the right arrow
key to complete a suggestion.
gitsome
is powered by xonsh
, which supports a Python REPL.
Run Python commands alongside shell commands:
Additional xonsh
features can be found in the xonsh tutorial
.
gitsome
keeps track of commands you enter and stores them in ~/.xonsh_history.json
. Use the up and down arrow keys to cycle through the command history.
You can control the ansi colors used for highlighting by updating your ~/.gitsomeconfig
file.
Color options include:
'black', 'red', 'green', 'yellow',
'blue', 'magenta', 'cyan', 'white'
For no color, set the value(s) to None
.
gitsome
is available for Mac, Linux, Unix, and Windows.
Not all GitHub workflows work well in a terminal;
gitsome
attempts to target those that do.
- Add additional GitHub API integrations
gitsome
is just getting started. Feel free to contribute!
- GitHub Integration Commands Syntax
- GitHub Integration Commands Listing
- GitHub Integration Commands Quick Reference
- GitHub Integration Commands Reference in COMMANDS.md
gh configure
gh create-comment
gh create-issue
gh create-repo
gh emails
gh emojis
gh feed
gh followers
gh following
gh gitignore-template
gh gitignore-templates
gh issue
gh issues
gh license
gh licenses
gh me
gh notifications
gh octo
gh pull-request
gh pull-requests
gh rate-limit
gh repo
gh repos
gh search-issues
gh search-repos
gh starred
gh trending
gh user
gh view
- Option: View in a Pager
- Option: View in a Browser
Usage:
$ gh <command> [param] [options]
configure Configure gitsome.
create-comment Create a comment on the given issue.
create-issue Create an issue.
create-repo Create a repo.
emails List all the user's registered emails.
emojis List all GitHub supported emojis.
feed List all activity for the given user or repo.
followers List all followers and the total follower count.
following List all followed users and the total followed count.
gitignore-template Output the gitignore template for the given language.
gitignore-templates Output all supported gitignore templates.
issue Output detailed information about the given issue.
issues List all issues matching the filter.
license Output the license template for the given license.
licenses Output all supported license templates.
me List information about the logged in user.
notifications List all notifications.
octo Output an Easter egg or the given message from Octocat.
pull-request Output detailed information about the given pull request.
pull-requests List all pull requests.
rate-limit Output the rate limit.
repo Output detailed information about the given filter.
repos List all repos matching the given filter.
search-issues Search for all issues matching the given query.
search-repos Search for all repos matching the given query.
starred Output starred repos.
trending List trending repos for the given language.
user List information about the given user.
view View the given index in the terminal or a browser.
See the GitHub Integration Commands Reference in COMMANDS.md for a detailed discussion of all GitHub integration commands, parameters, options, and examples.
Check out the next section for a quick reference.
To properly integrate with GitHub, you must first configure gitsome
:
$ gh configure
$ gh feed
View your activity feed or another user's activity feed, optionally through a pager with -p/--pager
. The pager option is available for many commands.
$ gh feed donnemartin -p
$ gh feed donnemartin/gitsome -p
$ gh notifications
View all pull requests for your repos:
$ gh pull-requests
View all open issues where you have been mentioned:
$ gh issues --issue_state open -issue_filter mentioned
View all issues, filtering for only those assigned to you, regardless of state (open, closed):
$ gh issues --issue_state all --issue_filter assigned
For more information about the filter and state qualifiers, visit the gh issues
reference in COMMANDS.md.
$ gh starred "repo filter"
Search issues that have the most +1s:
$ gh search-issues "is:open is:issue sort:reactions-+1-desc" -p
Search issues that have the most comments:
$ gh search-issues "is:open is:issue sort:comments-desc" -p
Search issues with the "help wanted" tag:
$ gh search-issues "is:open is:issue label:\"help wanted\"" -p
Search issues that have your user name tagged @donnemartin:
$ gh search-issues "is:issue donnemartin is:open" -p
Search all your open private issues:
$ gh search-issues "is:open is:issue is:private" -p
For more information about the query qualifiers, visit the searching issues reference.
Search all Python repos created on or after 2015, with >= 1000 stars:
$ gh search-repos "created:>=2015-01-01 stars:>=1000 language:python" --sort stars -p
For more information about the query qualifiers, visit the searching repos reference.
View trending repos:
$ gh trending [language] [-w/--weekly] [-m/--monthly] [-d/--devs] [-b/--browser]
View trending devs (devs are currently only supported in browser):
$ gh trending [language] --devs --browser
View the previously listed notifications, pull requests, issues, repos, users etc, with HTML nicely formatted for your terminal, or optionally in your browser:
$ gh view [#] [-b/--browser]
View an issue:
$ gh issue donnemartin/saws/1
View a pull request:
$ gh pull-request donnemartin/awesome-aws/2
List all available .gitignore
templates:
$ gh gitignore-templates
Set up your .gitignore
:
$ gh gitignore-template Python > .gitignore
List all available LICENSE
templates:
$ gh licenses
Set up your or LICENSE
:
$ gh license MIT > LICENSE
Call on Octocat to say the given message or an Easter egg:
$ gh octo [say]
$ gh user octocat
View your profile with the gh user [YOUR_USER_ID]
command or with the following shortcut:
$ gh me
Create a comment:
$ gh create-comment donnemartin/gitsome/1 -t "hello world"
Create an issue:
$ gh create-issue donnemartin/gitsome -t "title" -b "body"
Create a repo:
$ gh create-repo gitsome
Many gh
commands support a -p/--pager
option that displays results in a pager, where available.
Usage:
$ gh <command> [param] [options] -p
$ gh <command> [param] [options] --pager
Many gh
commands support a -b/--browser
option that displays results in your default browser instead of your terminal.
Usage:
$ gh <command> [param] [options] -b
$ gh <command> [param] [options] --browser
See the COMMANDS.md for a detailed listing of all GitHub integration commands, parameters, options, and examples.
Having trouble remembering these commands? Check out the handy autocompleter with interactive help to guide you through each command.
Note, you can combine gitsome
with other utilities such as Git-Extras.
gitsome
is hosted on PyPI. The following command will install gitsome
:
$ pip install gitsome
You can also install the latest gitsome
from GitHub source which can contain changes not yet pushed to PyPI:
$ pip install git+https://github.com/donnemartin/gitsome.git
If you are not installing in a virtualenv, run with sudo
:
$ sudo pip install gitsome
Depending on your system, you might need to run pip3
, possibly with the -H
flag:
$ sudo -H pip3 install gitsome
See this ticket for more details.
Once installed, run the optional gitsome
autocompleter with interactive help:
$ gitsome
Running the optional gitsome
shell will provide you with autocompletion, interactive help, fish-style suggestions, a Python REPL, etc.
Run GitHub-integrated commands:
$ gh <command> [param] [options]
Note: Running the gitsome
shell is not required to execute gh
commands. After installing gitsome
you can run gh
commands from any shell.
It is recommended that you install Python packages in a virtualenv to avoid potential issues with dependencies or permissions.
To view gitsome
virtualenv
installation instructions, click here.
To properly integrate with GitHub, gitsome
must be properly configured:
$ gh configure
View more details in the gh configure section.
By default, gitsome
looks at the following locations to enable bash completions.
To add additional bash completions, update the ~/.xonshrc
file with the location of your bash completions.
If ~/.xonshrc
does not exist, create it:
$ touch ~/.xonshrc
For example, if additional completions are found in usr/local/etc/my_bash_completion.d/completion.bash
, add the following line in ~/.xonshrc
:
$BASH_COMPLETIONS.append('/usr/local/etc/my_bash_completion.d/completion.bash')
You will need to restart gitsome
for the changes to take effect.
You can run gh
commands outside of the gitsome
shell completer. To enable gh
tab completions for this workflow, copy the gh_complete.sh
file locally.
Let bash know completion is available for the gh
command within your current session:
$ source /path/to/gh_complete.sh
To enable tab completion for all terminal sessions, add the following to your bashrc
file:
source /path/to/gh_complete.sh
Reload your bashrc
:
$ source ~/.bashrc
Tip: .
is the short form of source
, so you can run this instead:
$ . ~/.bashrc
zsh
includes a module which is compatible with bash completions.
Download the gh_complete.sh
file as above and append the following to your .zshrc
:
autoload bashcompinit
bashcompinit
source /path/to/gh_complete.sh
Reload your zshrc
:
$ source ~/.zshrc
Displaying the avatar for the gh me
and gh user
commands will require installing the optional PIL
or Pillow
dependency.
Windows* and Mac:
$ pip install Pillow
*See the Windows Support section for limitations on the avatar.
Ubuntu users, check out these instructions on askubuntu
- Python 3.4
- Python 3.5
gitsome
is powered by xonsh
which does not currently support Python 2.x, as discussed in this ticket.
- Mac OS X
- Tested on OS X 10.10
- Linux, Unix
- Tested on Ubuntu 14.04 LTS
- Windows
- Tested on Windows 10
gitsome
has been tested on Windows 10 with cmd
and cmder
.
Although you can use the standard Windows command prompt, you'll probably have a better experience with either cmder or conemu.
The commands gh user
and gh me
will always have the -t/--text_avatar
flag enabled, since img2txt
does not support the ansi avatar on Windows.
On Windows, the .gitsomeconfig
file can be found in %userprofile%
. For example:
C:\Users\dmartin\.gitsomeconfig
If you're interested in contributing to gitsome
, run the following commands:
$ git clone https://github.com/donnemartin/gitsome.git
$ cd gitsome
$ pip install -e .
$ pip install -r requirements-dev.txt
$ gitsome
$ gh <command> [param] [options]
Continuous integration details are available on Travis CI.
Run unit tests in your active Python environment:
$ python tests/run_tests.py
Run unit tests with tox on multiple Python environments:
$ tox
Source code documentation will soon be available on Readthedocs.org. Check out the source docstrings.
Run the following to build the docs:
$ scripts/update_docs.sh
Contributions are welcome!
Review the Contributing Guidelines for details on how to:
- Submit issues
- Submit pull requests
- click by mitsuhiko
- github_trends_rss by ryotarai
- github3.py by sigmavirus24
- html2text by aaronsw
- img2txt by hit9
- python-prompt-toolkit by jonathanslenders
- requests by kennethreitz
- xonsh by scopatz
Feel free to contact me to discuss any issues, questions, or comments.
My contact info can be found on my GitHub page.
Copyright 2016 Donne Martin
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.