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)
 10[![Sponsors on Open Collective](https://opencollective.com/git-bug/sponsors/badge.svg)](#sponsors)
 11[![License: GPL v3](https://img.shields.io/badge/License-GPLv3+-blue.svg)](http://www.gnu.org/licenses/gpl-3.0)
 12[![GoDoc](https://godoc.org/github.com/MichaelMure/git-bug?status.svg)](https://godoc.org/github.com/MichaelMure/git-bug)
 13[![Go Report Card](https://goreportcard.com/badge/github.com/MichaelMure/git-bug)](https://goreportcard.com/report/github.com/MichaelMure/git-bug)
 14[![Gitter chat](https://badges.gitter.im/gitterHQ/gitter.png)](https://gitter.im/the-git-bug/Lobby)
 15
 16</div>
 17
 18`git-bug` is a bug tracker that:
 19
 20- **is fully embeded in git**: you only need your git repository to have a bug tracker
 21- **is distributed**: use your normal git remote to collaborate, push and pull your bugs!
 22- **works offline**: in a plane or under the sea? Keep reading and writing bugs!
 23- **prevents vendor lock-in**: your usual service is down or went bad? You already have a full backup.
 24- **is fast**: listing bugs or opening them is a matter of milliseconds
 25- **doesn't pollute your project**: no files are added in your project
 26- **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
 27- **bridges to other bug trackers**: use [bridges](#bridges) to import and export to other trackers.
 28
 29:construction: This is now more than a proof of concept, but still not fully stable. Expect dragons and unfinished business. :construction:
 30
 31## Installation
 32
 33<details><summary>Pre-compiled binaries</summary>
 34
 351. Go to the [release page](https://github.com/MichaelMure/git-bug/releases/latest) and download the appropriate binary for your system.
 362. Copy the binary anywhere in your $PATH
 373. Rename the binary to `git-bug` (or `git-bug.exe` on windows)
 38
 39That's all !
 40
 41</details>
 42
 43<details><summary>Linux packages</summary>
 44
 45* [Archlinux (AUR)](https://aur.archlinux.org/packages/?K=git-bug)
 46* [NixOS](https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/version-management/git-and-tools/git-bug/default.nix#L31)
 47
 48</details>
 49
 50<details><summary>macOS packages</summary>
 51
 52* [Homebrew](https://formulae.brew.sh/formula/git-bug)
 53  ```
 54  brew install git-bug
 55  ```
 56
 57</details>
 58
 59<details><summary>Compile from git (unstable)</summary>
 60
 61```shell
 62git clone git@github.com:MichaelMure/git-bug.git
 63make install
 64```
 65
 66If it's not done already, add the golang binary directory in your PATH:
 67
 68```bash
 69export PATH=$PATH:$(go env GOROOT)/bin:$(go env GOPATH)/bin
 70```
 71
 72</details>
 73
 74## Workflows
 75
 76There is multiple ways to use `git-bug`:
 77
 78<details><summary>Native workflow</summary>
 79<p align="center">
 80    <img src="misc/diagrams/native_workflow.png" alt="Native workflow">
 81</p>
 82
 83This is the pure `git-bug` experience. In a similar fashion as with code, use `git bug push` and `git bug pull` to push and pull your bugs between git remotes and collaborate with your teammate. 
 84
 85</details>
 86
 87<details><summary>Bridge workflow</summary>
 88<p align="center">
 89    <img src="misc/diagrams/bridge_workflow.png" alt="Bridge workflow">
 90</p>
 91
 92As `git-bug` has bridges with other bug-trackers, you can use it as your personal local remote interface. Sync with `git bug bridge pull` and `git bug bridge push`, work from your terminal, integrate into your editor, it's up to you. And it works offline !
 93
 94</details>
 95
 96<details><summary>Web UI workflow (WIP)</summary>
 97<p align="center">
 98    <img src="misc/diagrams/webui-workflow.png" alt="Web UI workflow">
 99</p>
100
101Often, projects needs to have their bug-tracker public and accept editions from anyone facing a problem. To support this workflow, `git-bug` aims to have the web UI accept external OAuth authentication and act as a public portal. However the web UI is not up to speed for that yet. Contribution are very much welcome!
102
103</details>
104
105## CLI usage
106
107Create a new identity:
108
109```
110git bug user create
111```
112
113Create a new bug:
114
115```
116git bug add
117```
118
119Your favorite editor will open to write a title and a message.
120
121You can push your new entry to a remote:
122```
123git bug push [<remote>]
124```
125
126And pull for updates:
127```
128git bug pull [<remote>]
129```
130
131List existing bugs:
132```
133git bug ls
134```
135
136Filter and sort bugs using a [query](doc/queries.md):
137```
138git bug ls "status:open sort:edit"
139```
140
141You 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).
142
143## Interactive terminal UI
144
145An interactive terminal UI is available using the command `git bug termui` to browse and edit bugs.
146
147![Termui recording](misc/termui_recording.gif)
148
149## Web UI (status: WIP)
150
151You can launch a rich Web UI with `git bug webui`.
152
153<p align="center">
154  <img src="misc/webui1.png" alt="Web UI screenshot 1" width="880">
155</p>
156
157<p align="center">
158  <img src="misc/webui2.png" alt="Web UI screenshot 2" width="880">
159</p>
160
161This web UI is entirely packed inside the same go binary and serve static content through a localhost http server.
162
163The web UI interact with the backend through a GraphQL API. The schema is available [here](graphql/).
164
165## Bridges
166
167### Importer implementations
168
169|                                                 | Github             | Gitlab             | Jira               | Launchpad          |
170|-------------------------------------------------|--------------------|--------------------|--------------------|--------------------|
171| **incremental**<br/>(can import more than once) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x:                |
172| **with resume**<br/>(download only new data)    | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x:                |
173| **identities**                                  | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
174| identities update                               | :x:                | :x:                | :x:                | :x:                |
175| **bug**                                         | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
176| comments                                        | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
177| comment editions                                | :heavy_check_mark: | :x:                | :heavy_check_mark: | :x:                |
178| labels                                          | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x:                |
179| status                                          | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x:                |
180| title edition                                   | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x:                |
181| **media/files**                                 | :x:                | :x:                | :x:                | :x:                |
182| **automated test suite**                        | :heavy_check_mark: | :heavy_check_mark: | :x:                | :x:                |
183
184### Exporter implementations
185
186|                          | Github             | Gitlab             | Jira               | Launchpad |
187|--------------------------|--------------------|--------------------|--------------------|-----------|
188| **bug**                  | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x:       |
189| comments                 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x:       |
190| comment editions         | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x:       |
191| labels                   | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x:       |
192| status                   | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x:       |
193| title edition            | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x:       |
194| **automated test suite** | :heavy_check_mark: | :heavy_check_mark: | :x:                | :x:       |
195
196#### Bridge usage
197
198Interactively configure a new github bridge:
199
200```bash
201git bug bridge configure
202```
203
204Or manually:
205
206```bash
207git bug bridge configure \
208    --name=<bridge> \
209    --target=github \
210    --url=https://github.com/MichaelMure/git-bug \
211    --login=<login>
212    --token=<token>
213```
214
215Import bugs:
216
217```bash
218git bug bridge pull [<name>]
219```
220
221Export modifications:
222
223```bash
224git bug bridge push [<name>]
225```
226
227Deleting a bridge:
228
229```bash
230git bug bridge rm [<name>]
231```
232
233## Internals
234
235Interested by how it works ? Have a look at the [data model](doc/model.md) and the [internal bird-view](doc/architecture.md).
236
237## Misc
238
239- [Bash completion](misc/bash_completion)
240- [Zsh completion](misc/zsh_completion)
241- [PowerShell completion](misc/powershell_completion)
242- [ManPages](doc/man)
243
244## Planned features
245
246- media embedding
247- more bridges
248- extendable data model to support arbitrary bug tracker
249- inflatable raptor
250
251## Contribute
252
253PRs 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.
254
255```shell
256git clone git@github.com:MichaelMure/git-bug.git
257```
258
259You can now run `make` to build the project, or `make install` to install the binary in `$GOPATH/bin/`.
260
261To work on the web UI, have a look at [the dedicated Readme.](webui/Readme.md)
262
263
264## Contributors :heart:
265
266This project exists thanks to all the people who contribute.
267<a href="https://github.com/MichaelMure/git-bug/graphs/contributors"><img src="https://opencollective.com/git-bug/contributors.svg?width=890&button=false" /></a>
268
269
270## Backers
271
272Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/git-bug#backer)]
273
274<a href="https://opencollective.com/git-bug#backers" target="_blank"><img src="https://opencollective.com/git-bug/tiers/backer.svg?width=890"></a>
275
276
277## Sponsors
278
279Support 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)]
280
281<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>
282<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>
283<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>
284<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>
285<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>
286<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>
287<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>
288<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>
289<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>
290<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>
291
292
293## License
294
295Unless otherwise stated, this project is released under the [GPLv3](LICENSE) or later license © Michael Muré.
296
297The 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.