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