Git and GitHub for the productivity addicted
Git and GitHub command line swiss army knife for the productivity addicted.
gg is a base command, and all the work to create branches, list branches, clean up branches, connect to Bugzilla etc. are done by plugins.
gg is stateful. Meaning, plugins (not all!) need to store additional information that is re-used for other commands. For example, to connect to your GitHub account might need to store a GitHub Access Token.
NOTE! At the time of writing, gg requires Python 3.
The idea is that you install gg globally:
sudo pip install gg
But that’s optional, you can also just install it in your current virtual environment:
pip install gg
If you don’t want to install gg and its dependencies in either the current working virtual environment or in your global system Python, you can first install pipsi then once you’ve installed and set that up:
pipsi install gg
Next, you need to install some plugins. See PLUGINS.rst for a list of available plugins.
First download gg-complete.sh and save it somewhere on your computer. Then put this line into your .bashrc (or .bash_profile if you’re on OSX):
How to develop
To work on this, first run:
pip install -U --editable .
Now you can type:
If you have install more plugins they will be listed under the same --help command.
This project tracks black and expects all files to be as per how black wants them. Please see its repo for how to set up automatic formatting.
All code needs to be flake8 conformant. See setup.cfg for the rules.
To test both, run:
tox -e lint
How to write a plugin
To write your own custom plugin, (similar to gg/builtins/commands/commit) these are the critical lines you need to you have in your setup.py:
setup( ... install_requires=['gg'], entry_points=""" [gg.plugin] cli=gg_myplugin:start """, ... )
This assumes you have a file called gg_myplugin.py that has a function called start.
Proof of concept
Release history Release notifications | RSS feed
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.