README.md

  1<p align="center">
  2    <img width="150px" src="https://cdn.rawgit.com/MichaelMure/git-bug/master/misc/logo/logo-alpha-flat-bg.svg">
  3</p>
  4<h1 align="center">git-bug</h1>
  5
  6<div align="center">
  7
  8[![Build Status](https://travis-ci.org/MichaelMure/git-bug.svg?branch=master)](https://travis-ci.org/MichaelMure/git-bug)
  9[![Backers on Open Collective](https://opencollective.com/git-bug/backers/badge.svg)](#backers) [![Sponsors on Open Collective](https://opencollective.com/git-bug/sponsors/badge.svg)](#sponsors) [![License: GPL v3](https://img.shields.io/badge/License-GPLv3+-blue.svg)](http://www.gnu.org/licenses/gpl-3.0)
 10[![GoDoc](https://godoc.org/github.com/MichaelMure/git-bug?status.svg)](https://godoc.org/github.com/MichaelMure/git-bug)
 11[![Go Report Card](https://goreportcard.com/badge/github.com/MichaelMure/git-bug)](https://goreportcard.com/report/github.com/MichaelMure/git-bug)
 12[![Gitter chat](https://badges.gitter.im/gitterHQ/gitter.png)](https://gitter.im/the-git-bug/Lobby)
 13
 14</div>
 15
 16`git-bug` is a bug tracker that:
 17
 18- **is fully embeded in git**: you only need your git repository to have a bug tracker
 19- **is distributed**: use your normal git remote to collaborate, push and pull your bugs!
 20- **works offline**: in a plane or under the sea? Keep reading and writing bugs!
 21- **prevents vendor lock-in**: your usual service is down or went bad? You already have a full backup.
 22- **is fast**: listing bugs or opening them is a matter of milliseconds
 23- **doesn't pollute your project**: no files are added in your project
 24- **integrates with your tooling**: use the UI you like (CLI, terminal, web) or integrate with your existing tools through the CLI or the GraphQL API
 25- **bridges to other bug trackers**: use [bridges](#bridges) to import and export to other trackers.
 26
 27:construction: This is now more than a proof of concept, but still not fully stable. Expect dragons and unfinished business. :construction:
 28
 29## Install
 30
 31<details><summary>Pre-compiled binaries</summary>
 32
 331. Go to the [release page](https://github.com/MichaelMure/git-bug/releases/latest) and download the appropriate binary for your system.
 342. Copy the binary anywhere in your $PATH
 353. Rename the binary to `git-bug` (or `git-bug.exe` on windows)
 36
 37That's all !
 38
 39</details>
 40
 41<details><summary>Linux packages</summary>
 42
 43* [Archlinux (AUR)](https://aur.archlinux.org/packages/?K=git-bug)
 44
 45</details>
 46
 47<details><summary>go install (unstable)</summary>
 48
 49```shell
 50go install github.com/MichaelMure/git-bug
 51```
 52
 53If it's not done already, add the golang binary directory in your PATH:
 54
 55```bash
 56export PATH=$PATH:$(go env GOROOT)/bin:$(go env GOPATH)/bin
 57```
 58
 59</details>
 60
 61## CLI usage
 62
 63Create a new identity:
 64
 65```
 66git bug user create
 67```
 68
 69Create a new bug:
 70
 71```
 72git bug add
 73```
 74
 75Your favorite editor will open to write a title and a message.
 76
 77You can push your new entry to a remote:
 78```
 79git bug push [<remote>]
 80```
 81
 82And pull for updates:
 83```
 84git bug pull [<remote>]
 85```
 86
 87List existing bugs:
 88```
 89git bug ls
 90```
 91
 92Filter and sort bugs using a [query](doc/queries.md):
 93```
 94git bug ls "status:open sort:edit"
 95```
 96
 97You 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](doc/md/git-bug.md).
 98
 99## Interactive terminal UI
100
101An interactive terminal UI is available using the command `git bug termui` to browse and edit bugs.
102
103![Termui recording](misc/termui_recording.gif)
104
105## Web UI (status: WIP)
106
107You can launch a rich Web UI with `git bug webui`.
108
109<p align="center">
110  <img src="misc/webui1.png" alt="Web UI screenshot 1" width="738">
111</p>
112
113<p align="center">
114  <img src="misc/webui2.png" alt="Web UI screenshot 2" width="738">
115</p>
116
117This web UI is entirely packed inside the same go binary and serve static content through a localhost http server.
118
119The web UI interact with the backend through a GraphQL API. The schema is available [here](graphql/).
120
121## Bridges
122
123### Importer implementations
124
125| | Github | Gitlab | Launchpad |
126| --- | --- | --- | --- |
127| **incremental**<br/>(can import more than once) | :heavy_check_mark: | :heavy_check_mark: | :x: |
128| **with resume**<br/>(download only new data) | :heavy_check_mark: | :heavy_check_mark: | :x: |
129| **identities** | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
130| identities update | :x: | :x: | :x: |
131| **bug** | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
132| comments | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
133| comment editions | :heavy_check_mark: | :x: | :x: |
134| labels | :heavy_check_mark: | :heavy_check_mark: | :x: |
135| status | :heavy_check_mark: | :heavy_check_mark: | :x: |
136| title edition | :heavy_check_mark: | :heavy_check_mark: | :x: |
137| **media/files** | :x: | :x: | :x: |
138| **automated test suite** | :heavy_check_mark: | :heavy_check_mark: | :x: |
139
140### Exporter implementations
141
142| | Github | Gitlab | Launchpad |
143| --- | --- | --- | --- |
144| **bug** | :heavy_check_mark: | :heavy_check_mark: | :x: |
145| comments | :heavy_check_mark: | :heavy_check_mark: | :x: |
146| comment editions | :heavy_check_mark: | :heavy_check_mark: | :x: |
147| labels | :heavy_check_mark: | :heavy_check_mark: | :x: |
148| status | :heavy_check_mark: | :heavy_check_mark: | :x: |
149| title edition | :heavy_check_mark: | :heavy_check_mark: | :x: |
150| **automated test suite** | :heavy_check_mark: | :heavy_check_mark: | :x: |
151
152#### Bridge usage
153
154Interactively configure a new github bridge:
155
156```bash
157git bug bridge configure
158```
159
160Or manually:
161
162```bash
163git bug bridge configure \
164    --name=mybridge \
165    --target=github \
166    --url=https://github.com/michaelmure/git-bug \
167    --token=$TOKEN
168```
169
170Import bugs:
171
172```bash
173git bug bridge pull [<name>]
174```
175
176Export modifications:
177
178```bash
179git bug bridge push [<name>]
180```
181
182Deleting a bridge:
183
184```bash
185git bug bridge rm [<name>]
186```
187
188## Internals
189
190Interested by how it works ? Have a look at the [data model](doc/model.md) and the [internal bird-view](doc/architecture.md).
191
192## Misc
193
194- [Bash completion](misc/bash_completion)
195- [Zsh completion](misc/zsh_completion)
196- [PowerShell completion](misc/powershell_completion)
197- [ManPages](doc/man)
198
199## Planned features
200
201- media embedding
202- more bridges
203- extendable data model to support arbitrary bug tracker
204- inflatable raptor
205
206## Contribute
207
208PRs accepted. Drop by the [Gitter lobby](https://gitter.im/the-git-bug/Lobby) for a chat or browse the issues to see what is worked on or discussed.
209
210Developers unfamiliar with Go may try to clone the repository using "git clone". Instead, one should use:
211
212```shell
213go get -u github.com/MichaelMure/git-bug
214```
215
216The git repository will then be available:
217
218```shell
219# Note that $GOPATH defaults to $HOME/go
220$ cd $GOPATH/src/github.com/MichaelMure/git-bug/
221```
222
223You can now run `make` to build the project, or `make install` to install the binary in `$GOPATH/bin/`.
224
225To work on the web UI, have a look at [the dedicated Readme.](webui/Readme.md)
226
227
228## Contributors :heart:
229
230This project exists thanks to all the people who contribute.
231<a href="https://github.com/MichaelMure/git-bug/graphs/contributors"><img src="https://opencollective.com/git-bug/contributors.svg?width=890&button=false" /></a>
232
233
234## Backers
235
236Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/git-bug#backer)]
237
238<a href="https://opencollective.com/git-bug#backers" target="_blank"><img src="https://opencollective.com/git-bug/tiers/backer.svg?width=890"></a>
239
240
241## Sponsors
242
243Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/git-bug#sponsor)]
244
245<a href="https://opencollective.com/git-bug/sponsor/0/website" target="_blank"><img src="https://opencollective.com/git-bug/tiers/sponsor/0/avatar.svg"></a>
246<a href="https://opencollective.com/git-bug/sponsor/1/website" target="_blank"><img src="https://opencollective.com/git-bug/tiers/sponsor/1/avatar.svg"></a>
247<a href="https://opencollective.com/git-bug/sponsor/2/website" target="_blank"><img src="https://opencollective.com/git-bug/tiers/sponsor/2/avatar.svg"></a>
248<a href="https://opencollective.com/git-bug/sponsor/3/website" target="_blank"><img src="https://opencollective.com/git-bug/tiers/sponsor/3/avatar.svg"></a>
249<a href="https://opencollective.com/git-bug/sponsor/4/website" target="_blank"><img src="https://opencollective.com/git-bug/tiers/sponsor/4/avatar.svg"></a>
250<a href="https://opencollective.com/git-bug/sponsor/5/website" target="_blank"><img src="https://opencollective.com/git-bug/tiers/sponsor/5/avatar.svg"></a>
251<a href="https://opencollective.com/git-bug/sponsor/6/website" target="_blank"><img src="https://opencollective.com/git-bug/tiers/sponsor/6/avatar.svg"></a>
252<a href="https://opencollective.com/git-bug/sponsor/7/website" target="_blank"><img src="https://opencollective.com/git-bug/tiers/sponsor/7/avatar.svg"></a>
253<a href="https://opencollective.com/git-bug/sponsor/8/website" target="_blank"><img src="https://opencollective.com/git-bug/tiers/sponsor/8/avatar.svg"></a>
254<a href="https://opencollective.com/git-bug/sponsor/9/website" target="_blank"><img src="https://opencollective.com/git-bug/tiers/sponsor/9/avatar.svg"></a>
255
256
257## License
258
259Unless otherwise stated, this project is released under the [GPLv3](LICENSE) or later license © Michael Muré.
260
261The git-bug logo by [Viktor Teplov](https://github.com/vandesign) is released under the [Creative Commons Attribution 4.0 International (CC BY 4.0)](misc/logo/LICENSE) license © Viktor Teplov.