git-bug — это баг-трекер, который:
-
полностью встроен в git: для работы с задачами достаточно одного git-репозитория
-
распределённый: используйте обычные git-remote для совместной работы — пушьте и тяните баги как обычный код!
-
работает офлайн: в самолёте или в подводной лодке — читайте и пишите задачи без интернета!
-
исключает привязку к платформе: ваш привычный сервис лёг или испортился? У вас уже есть полная резервная копия.
-
быстрый: список задач или их открытие занимают миллисекунды
-
не засоряет проект: в репозиторий не добавляется ни одного файла
-
интегрируется с вашими инструментами: используйте любой удобный интерфейс (CLI, терминал, веб) или подключайте существующие инструменты через CLI или GraphQL API
-
синхронизируется с другими баг-трекерами: используйте мосты (bridges) для импорта и экспорта данных в сторонние трекеры.
Установка
Полное руководство по установке, включая сборку из исходного кода и проверку результата, приведено в INSTALLATION.md.
Рабочие процессы
git-bug поддерживает несколько режимов работы. Подробности описаны в документации по рабочим процессам.
Нативный рабочий процесс
Это чистый опыт работы с git-bug. По аналогии с кодом используйте git bug push и git bug pull, чтобы обмениваться задачами через git-remote и совместно работать с коллегами.
Рабочий процесс через мост
Поскольку git-bug поддерживает мосты к другим баг-трекерам, его можно использовать как персональный локальный интерфейс к удалённому трекеру. Синхронизируйтесь с помощью git bug bridge pull и git bug bridge push, работайте в терминале, встраивайте в редактор — выбор за вами. И всё это работает офлайн!
Рабочий процесс через веб-интерфейс (в разработке)
Проекты нередко нуждаются в публично доступном баг-трекере, куда может сообщить об ошибке любой желающий. Чтобы поддержать такой сценарий, в git-bug планируется реализовать внешнюю OAuth-аутентификацию в веб-интерфейсе и возможность работы в режиме публичного портала. Пока веб-интерфейс до этого ещё не дорос, но любой вклад в разработку приветствуется!
Работа через CLI
Создать новую личность (identity):
git bug user create
Создать новую задачу:
git bug add
Откроется любимый редактор, где можно ввести заголовок и описание.
Отправить новую запись на удалённый сервер:
git bug push [<remote>]
Получить обновления:
git bug pull [<remote>]
Показать список задач:
git bug ls
Фильтровать и сортировать задачи с помощью запросов (query):
git bug ls "status:open sort:edit"
Искать задачи по тексту:
git bug ls "foo bar" baz
Для просмотра и редактирования задач используйте команды show, comment, open и close. Подробное описание каждой команды доступно через git bug <command> --help или в документации по командам.
Интерактивный терминальный интерфейс
Запустите интерактивный терминальный интерфейс командой git bug termui, чтобы просматривать и редактировать задачи прямо в консоли.
Веб-интерфейс
Запустите полноценный веб-интерфейс командой git bug webui. В нём можно просматривать, искать и фильтровать задачи, создавать новые, оставлять комментарии, изменять заголовки, метки и статусы. Помимо работы с задачами, веб-интерфейс позволяет просматривать код репозитория: дерево файлов, файлы с подсветкой синтаксиса, историю коммитов и diff-ы.
Веб-интерфейс встроен в тот же бинарный файл Go и раздаётся локальным HTTP-сервером. Взаимодействие с бэкендом происходит через GraphQL API, схема которого доступна здесь.
Мосты (Bridges)
git-bug поддерживает импорт и экспорт данных для Github, Gitlab, Jira и Launchpad. Информацию о возможностях каждого моста можно найти в матрице функций, а полное руководство по настройке — в документации по мостам.
Интерактивная настройка нового моста:
git bug bridge new
Или вручную:
git bug bridge new \
--name=<bridge> \
--target=github \
--url=https://github.com/git-bug/git-bug \
--login=<login> \
--token=<token>
Импорт задач:
git bug bridge pull [<name>]
Экспорт изменений:
git bug bridge push [<name>]
Удаление моста:
git bug bridge rm [<name>]
Устройство системы
Интересует, как это работает внутри? Ознакомьтесь с моделью данных и общей архитектурой.
Формат хранения данных на диске формально описан в спецификации git-bug: там задокументированы формат сущностей на основе DAG, идентичности и сущность задачи. Это полезно читать, если вы хотите создать альтернативную реализацию или инструмент, который напрямую читает данные git-bug.
Или, возможно, вас интересует, как создать собственную распределённую структуру данных в git?
Смотрите также всю документацию.
Планируемые возможности
Матрица функций даёт хороший, хотя и неполный обзор того, что планируется реализовать.
Дополнительные запланированные возможности:
-
веб-интерфейс в режиме публичного портала для приёма обращений от пользователей
-
inflatable raptor
Участие в разработке
Принимаем Pull Request-ы. Заходите в Matrix-комнату пообщаться, изучайте матрицу функций или просматривайте задачи и обсуждения, чтобы быть в курсе активных работ.
Чтобы развернуть окружение разработчика, собрать проект и запустить тесты, обратитесь к CONTRIBUTING.md. Для работы над веб-интерфейсом загляните в его отдельный README.
Авторы :heart:
Проект существует благодаря всем, кто в него вносит свой вклад.
Бэкеры и спонсоры
Спасибо всем нашим бэкерам и спонсорам! 🙏 Стать бэкером или спонсором
Лицензия
Если не указано иное, проект распространяется на условиях лицензии GPLv3 или более поздней версии © Michael Muré.
Логотип git-bug, созданный Viktor Teplov, распространяется на условиях лицензии Creative Commons Attribution 4.0 International (CC BY 4.0) © Viktor Teplov.