git-stacktrace is a tool to help you associate git commits with stacktraces.
It helps you identify related commits by looking at:
- commits in given range that touched files present in the stacktrace
- commits in given range that added/removed code present in the stacktrace
Supported Languages
- Python
- Java
- JavaScript
Development
Run tests with: tox
Installation
$ pip install git_stacktrace
Usage
Run git stacktrace within a git initialized directory.
usage: git stacktrace [<options>] [<RANGE>] < stacktrace from stdin Lookup commits related to a given stacktrace. positional arguments: range git commit range to use optional arguments: -h, --help show this help message and exit --since <date1> show commits more recent than a specific date (from git-log) --server start a webserver to visually interact with git- stacktrace --port PORT Server port -f, --fast Speed things up by not running pickaxe if the file for a line of code cannot be found -b [BRANCH], --branch [BRANCH] Git branch. If using --since, use this to specify which branch to run since on. Runs on current branch by default --version show program's version number and exit -d, --debug Enable debug logging
For the Python API see: git_stacktrace/api.py
To run as a web server: git stacktrace --server --port=8080
or GIT_STACKTRACE_PORT=8080 git stacktrace --server
Use the web server as an API:
$ curl \ -d '{"option-type":"by-date", "since":"1.day", "trace":"..."}' \ -H "Content-Type: application/json" \ -X POST http://localhost:8080/
Examples
Example output:
$ git stacktrace --since=1.day < trace Traceback (most recent call last): File "webapp/framework/resource.py", line 72, in _call result = getattr(self, method_name)() File "webapp/resources/interests_resource.py", line 232, in get if self.options['from_navigate'] == "true": KeyError commit da39a3ee5e6b4b0d3255bfef95601890afd80709 Commit Date: Tue, 19 Jul 2016 14:18:08 -0700 Author: John Doe <johndoe@pinterest.com> Subject: break interest resource Link: https://example.com/D1000 Files Modified: - webapp/resources/interests_resource.py:232 Lines Added: - "if self.options['from_navigate'] == "true":"