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)
10[](#sponsors)
11[](http://www.gnu.org/licenses/gpl-3.0)
12[](https://godoc.org/github.com/MichaelMure/git-bug)
13[](https://goreportcard.com/report/github.com/MichaelMure/git-bug)
14[](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## Install
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>Compile from git (unstable)</summary>
51
52```shell
53git clone git@github.com:MichaelMure/git-bug.git
54make install
55```
56
57If it's not done already, add the golang binary directory in your PATH:
58
59```bash
60export PATH=$PATH:$(go env GOROOT)/bin:$(go env GOPATH)/bin
61```
62
63</details>
64
65## CLI usage
66
67Create a new identity:
68
69```
70git bug user create
71```
72
73Create a new bug:
74
75```
76git bug add
77```
78
79Your favorite editor will open to write a title and a message.
80
81You can push your new entry to a remote:
82```
83git bug push [<remote>]
84```
85
86And pull for updates:
87```
88git bug pull [<remote>]
89```
90
91List existing bugs:
92```
93git bug ls
94```
95
96Filter and sort bugs using a [query](doc/queries.md):
97```
98git bug ls "status:open sort:edit"
99```
100
101You 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).
102
103## Interactive terminal UI
104
105An interactive terminal UI is available using the command `git bug termui` to browse and edit bugs.
106
107
108
109## Web UI (status: WIP)
110
111You can launch a rich Web UI with `git bug webui`.
112
113<p align="center">
114 <img src="misc/webui1.png" alt="Web UI screenshot 1" width="880">
115</p>
116
117<p align="center">
118 <img src="misc/webui2.png" alt="Web UI screenshot 2" width="880">
119</p>
120
121This web UI is entirely packed inside the same go binary and serve static content through a localhost http server.
122
123The web UI interact with the backend through a GraphQL API. The schema is available [here](graphql/).
124
125## Bridges
126
127### Importer implementations
128
129| | Github | Gitlab | Jira | Launchpad |
130|-------------------------------------------------|--------------------|--------------------|--------------------|--------------------|
131| **incremental**<br/>(can import more than once) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: |
132| **with resume**<br/>(download only new data) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: |
133| **identities** | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
134| identities update | :x: | :x: | :x: | :x: |
135| **bug** | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
136| comments | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
137| comment editions | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: |
138| labels | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: |
139| status | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: |
140| title edition | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: |
141| **media/files** | :x: | :x: | :x: | :x: |
142| **automated test suite** | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: |
143
144### Exporter implementations
145
146| | Github | Gitlab | Jira | Launchpad |
147|--------------------------|--------------------|--------------------|--------------------|-----------|
148| **bug** | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: |
149| comments | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: |
150| comment editions | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: |
151| labels | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: |
152| status | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: |
153| title edition | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: |
154| **automated test suite** | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: |
155
156#### Bridge usage
157
158Interactively configure a new github bridge:
159
160```bash
161git bug bridge configure
162```
163
164Or manually:
165
166```bash
167git bug bridge configure \
168 --name=<bridge> \
169 --target=github \
170 --url=https://github.com/MichaelMure/git-bug \
171 --login=<login>
172 --token=<token>
173```
174
175Import bugs:
176
177```bash
178git bug bridge pull [<name>]
179```
180
181Export modifications:
182
183```bash
184git bug bridge push [<name>]
185```
186
187Deleting a bridge:
188
189```bash
190git bug bridge rm [<name>]
191```
192
193## Internals
194
195Interested by how it works ? Have a look at the [data model](doc/model.md) and the [internal bird-view](doc/architecture.md).
196
197## Misc
198
199- [Bash completion](misc/bash_completion)
200- [Zsh completion](misc/zsh_completion)
201- [PowerShell completion](misc/powershell_completion)
202- [ManPages](doc/man)
203
204## Planned features
205
206- media embedding
207- more bridges
208- extendable data model to support arbitrary bug tracker
209- inflatable raptor
210
211## Contribute
212
213PRs 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.
214
215```shell
216git clone git@github.com:MichaelMure/git-bug.git
217```
218
219You can now run `make` to build the project, or `make install` to install the binary in `$GOPATH/bin/`.
220
221To work on the web UI, have a look at [the dedicated Readme.](webui/Readme.md)
222
223
224## Contributors :heart:
225
226This project exists thanks to all the people who contribute.
227<a href="https://github.com/MichaelMure/git-bug/graphs/contributors"><img src="https://opencollective.com/git-bug/contributors.svg?width=890&button=false" /></a>
228
229
230## Backers
231
232Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/git-bug#backer)]
233
234<a href="https://opencollective.com/git-bug#backers" target="_blank"><img src="https://opencollective.com/git-bug/tiers/backer.svg?width=890"></a>
235
236
237## Sponsors
238
239Support 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)]
240
241<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>
242<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>
243<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>
244<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>
245<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>
246<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>
247<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>
248<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>
249<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>
250<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>
251
252
253## License
254
255Unless otherwise stated, this project is released under the [GPLv3](LICENSE) or later license © Michael Muré.
256
257The 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.