git-bug
git-bug is a bug tracker that:
- fully embed in git: you only need your git repository to have a bug tracker
 - is distributed: use your normal git remote to collaborate, push and pull your bugs !
 - works offline: in a plane or under the sea ? keep reading and writing bugs
 - prevent vendor locking: your usual service is down or went bad ? you already have a full backup
 - is fast: listing bugs or opening them is a matter of milliseconds
 - doesn't pollute your project: no files are added in your project
 - integrate with your tooling: use the UI you like (CLI, terminal, web) or integrate with your existing tools through the CLI or the GraphQL API
 - bridge with other bug trackers: bridges exist to import and export to other trackers.
 
:construction: This is now more than a proof of concept, but still not fully stable. Expect dragons and unfinished business. :construction:
Install
Pre-compiled binaries
- Go to the release page and download the appropriate binary for your system.
 - Copy the binary anywhere in your PATH
 - Rename the binary to 
git-bug(orgit-bug.exeon windows) 
That's all !
Linux packages
go get (unstable)
go get -u github.com/MichaelMure/git-bug
If it's not done already, add golang binary directory in your PATH:
export PATH=$PATH:$(go env GOROOT)/bin:$(go env GOPATH)/bin
CLI usage
Create a new identity:
git bug user create
Create a new bug:
git bug add
Your favorite editor will open to write a title and a message.
You can push your new entry to a remote:
git bug push [<remote>]
And pull for updates:
git bug pull [<remote>]
List existing bugs:
git bug ls
Filter and sort bugs using a query:
git bug ls "status:open sort:edit"
You can now use commands like show, comment, open or close to display and modify bugs. For more details about each command, you can run git bug <command> --help or read the command's documentation.
Interactive terminal UI
An interactive terminal UI is available using the command git bug termui to browse and edit bugs.

Web UI (status: WIP)
You can launch a rich Web UI with git bug webui.
  
  
This web UI is entirely packed inside the same go binary and serve static content through a localhost http server.
The web UI interact with the backend through a GraphQL API. The schema is available here.
Bridges
Importer implementations
| Github | Gitlab | Launchpad | |
|---|---|---|---|
| incremental (can import more than once)  | 
:heavy_check_mark: | :heavy_check_mark: | :x: | 
| with resume (download only new data)  | 
:heavy_check_mark: | :heavy_check_mark: | :x: | 
| identities | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | 
| identities update | :x: | :x: | :x: | 
| bug | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | 
| comments | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | 
| comment editions | :heavy_check_mark: | :x: | :x: | 
| labels | :heavy_check_mark: | :heavy_check_mark: | :x: | 
| status | :heavy_check_mark: | :heavy_check_mark: | :x: | 
| title edition | :heavy_check_mark: | :heavy_check_mark: | :x: | 
| media/files | :x: | :x: | :x: | 
| automated test suite | :heavy_check_mark: | :heavy_check_mark: | :x: | 
Exporter implementations
| Github | Gitlab | Launchpad | |
|---|---|---|---|
| bug | :heavy_check_mark: | :heavy_check_mark: | :x: | 
| comments | :heavy_check_mark: | :heavy_check_mark: | :x: | 
| comment editions | :heavy_check_mark: | :heavy_check_mark: | :x: | 
| labels | :heavy_check_mark: | :heavy_check_mark: | :x: | 
| status | :heavy_check_mark: | :heavy_check_mark: | :x: | 
| title edition | :heavy_check_mark: | :heavy_check_mark: | :x: | 
| automated test suite | :heavy_check_mark: | :heavy_check_mark: | :x: | 
Bridge usage
Interactively configure a new github bridge:
git bug bridge configure
Or manually:
git bug bridge configure \
    --name=mybridge \
    --target=github \
    --url=https://github.com/michaelmure/git-bug \
    --token=$TOKEN
Import bugs:
git bug bridge pull [<name>]
Export modifications:
git bug bridge push [<name>]
Deleting a bridge:
git bug bridge rm [<name>]
Internals
Interested by how it works ? Have a look at the data model and the internal bird-view.
Misc
Planned features
- media embedding
 - more bridges
 - extendable data model to support arbitrary bug tracker
 - inflatable raptor
 
Contribute
PRs accepted. Drop by the Gitter lobby for a chat or browse the issues to see what is worked on or discussed.
Developers unfamiliar with Go may try to clone the repository using "git clone". Instead, one should use:
go get -u github.com/MichaelMure/git-bug
The git repository will then be available:
# Note that $GOPATH defaults to $HOME/go
$ cd $GOPATH/src/github.com/MichaelMure/git-bug/
You can now run make to build the project, or make install to install the binary in $GOPATH/bin/.
To work on the web UI, have a look at the dedicated Readme.
Contributors :heart:
This project exists thanks to all the people who contribute.
Backers
Thank you to all our backers! 🙏 [Become a backer]
Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]
License
Unless otherwise stated, this project is released under the GPLv3 or later license © Michael Muré.
The git-bug logo by Viktor Teplov is released under the Creative Commons Attribution 4.0 International (CC BY 4.0) license © Viktor Teplov.
