An ncurses app for browsing file git history
Project description
bblame is an interactive ncurses git blame viewer. Allowing you to explore the git history of a file.
Features
- Browse forwards and backwards through file history a commit at a time
- Select a line and drill into the history past the commit that changed that line most recently
- Full code syntax highlighting support
- Display the git show for the commit of any selected line
- Browse file history across file renames
Usage
bblame is a curses application. Usage will be displayed when called with no arguments or -h --help:
usage: __main__.py [-h] [--revision {revision}] [--debug] [--version] filename [+{line_num} or +/{search_pattern}] positional arguments: filename Name or path to file to blame +{line_num} or +/{search_pattern} The line number or search pattern the cursor will be positioned on (this arg will put bblame in visual mode) optional arguments: -h, --help show this help message and exit --revision {revision}, -r {revision} The revision to initialize the blame file to --debug Increase logging and show tracebacks --version show program's version number and exit
To show available commands while running bblame use the h key, which will display the key to action bindings, example below:
KEYS: ACTION - DESCRIPTION -------------------------- q: Quit Quit the application /: Search Search downward through the current blame or commit n: Next Search Match Jump to the next search match (in the downward direction) N: Prev Search Match Jump to the prev search match (in the upward direction) v: Visual Select Mode Enter visual select mode (only from normal mode) o: Show/View Commit Show a commit selected by the visual mode cursor O: Show/View file Commit Show the current revision commit ESC: Normal Mode Return to Normal mode ENTER, d: Drill Down Drill down past the commit highlighted in visual mode. Opens a new git blame <, ,: Parent blame Move to git blame of the parent of current commit (i.e. traverse backwards through history, one commit at a time) >, .: Ancestor blame Move to git blame of the ancestor of current commit (i.e. traverse forwards through history, one commit at a time) BACKSPACE, DC, f: Pop Back Pop back to previous git object g, HOME: Jump to Top Jump to the top of the screen G, END: Jump to Bottom Jump to the bottom of the screen h: Help Display the help message s: Toggle Syntax Highlight Toggle syntax highlighting on or off. Showing or hiding syntax highlighting ONLY IF IT IS ENABLED. H: Jump to HEAD Jump to a blame of the most recent commit for the file T: Jump to TAIL Jump to a blame of the first commit for the file
Installation
sudo -H pip install bblame
or
python setup.py install
Issue
Issue tracker can be found here
Plugins:
You’ll find a plugins dir if you clone the git repo (or browse to it on bitbucket) I’m a vim guy, so that means so far there is only a vim plugin ;) Though, I encourage pull requests or links to repos containing plugins for other editors/software!
Development:
Pull requests welcome
Git repo can be found here
Dependencies you’ll need to install with your package manager for dev and test:
- pip/pip3 (bblame supports both 2.7.X and 3+ versions of python)
- tmux (a dependency of the curses unit test library, hecate)
- make
The rest of the dependencies can be installed with:
- make py_env
Useful Dev Notes:
- run make check to execute static analysis and unittests
- run python -m betterblame <args> in root of betterblame.git to run an instance of bblame with your changes
- You can use the test files in tests/testfiles/ for manual testing.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size bblame-0.5.9.tar.gz (33.0 kB) | File type Source | Python version None | Upload date | Hashes View |