github MichaelMure/git-bug v0.8.0
0.8.0

17 months ago

More than 800 commits and a long long time after, git-bug v0.8.0 is now available.

Once again, this release represent a push towards making git-bug generally useful and correct. The two main improvements are a new Entity framework and write-capable WebUI.

image

Introduced in this version, the code handling the data model and conflict resolution has been improved to support fully p2p sharing model, and generalized into an easily reusable framework Documentation 1, Documentation 2. This is a huge step forward as it means writing new entities (configuration, pull-request, board ...) becomes nearly as simple as for a CRUD application.

This entity framework makes it easy to extend git-bug, but also to use it as a library to create brand new applications using the same techniques as git-bug.

Additionally, the underlying data model has been improved and fix earlier shortcoming. Notably, operations can now be represented in a DAG with concurrent editions across machines while still supporting proper merge conflict, instead of the enforced linear structure as before. Before, things were working OK with a star topology of git remotes (that is, a central repository) but would break down with anything more complicated. No more! The new data model also becomes fully immutable (aka append-only), which is much more conductive with cryptographic signatures and encryption.

Breaking changes

  • changes in the data model makes it a requirement to use the migration tool to to update any previous repo.
  • remove the legacy identities that were directly embedded in bugs

Core

  • introduce a reusable entity package capable of handling all the complex operations of an Entity (bug, board, config ...): operations, DAG manipulation, conflict merge, signature, integrity ... to greatly simplify writing and maintaining an entity. Documentation 1, Documentation 2
  • introduce CombinedId, a new kind of identifier for an item within an Entity (for example a comment in a bug), that hold two partial identifiers interleaved for fast addressing. Documentation
  • introduce the concept of resolvers, so that entities can link to another
  • use go-git to manipulate the git repository, instead of executing the local git binary
  • add support for signing the git commit with the author's signature, and verifying
  • add support for git config includes by @mindriot101
  • rework of the Repository layer for modularity, simplicity and testing, allowing more easily to plug an alternative storage
  • support for full text search in bug comments
  • support application namespace in the repository so that other app can use the entity package as a framework by @smoyer64

Commands

  • auto-completion of bug identifier, bridge names, credentials, labels, remote, identity and flags 🎉 by @krobelus
  • complete refactoring to avoid global variables and be more conductive to testing
  • new command comment edit to edit a bug's comment
  • new command rm to remove a bug by @vincetiu8
  • ls and show learned different output format with --format=<format>, with format being one of default, plain, json, compact and org-mode by @vincetiu8 and @karlicoss
  • allow user create without interactive prompt by @cvhariharan

Query language

  • support filtering on bugs having no labels
  • support filtering on metadata by @vmiklos

Bug

  • complete rework using the new entity framework

Cache

  • introduce a LRU to have a limit of entities loaded in memory and effectively cap the memory usage of long running processes by @vincetiu8
  • proper locking for concurrent access by @vincetiu8

Bridges

  • core: support for remote bug tracker rate limiting by @rng-dynamics
  • core: support to indicate that the configuration wizard is executed non-interactively and should have all the required parameters set by @GlancingMind
  • Github: revamped client and iterator with proper rate limiting handling by @rng-dynamics
  • Github: revamped credentials creation following Github removing the previous API by @rng-dynamics
  • Github: support new token format by @ellsclytn
  • Github: extended tests by @rng-dynamics
  • Github: fix push then pull creating duplicates by @rng-dynamics
  • Gitlab: revamped client to use the much better event API to replace the note API that was hard to use and caused a lot of problems and headaches by @5nord
  • Gitlab: fix access token settings by @remram44
  • Gitlab: cleanup titles on import by @vincetiu8
  • Gitlab: support new token format by @gaelj
  • Jira: fix incorrect client creation reusing the same credential

API

  • new HTTP handler to access files stored in git
  • new HTTP handler to upload a file to git

GraphQL

  • strong typing for identifiers
  • prepare for external authentication
  • introduce addCommentAndClose and addCommentAndReopen mutations, to comment and change a bug state in a single atomic operation by @GlancingMind
  • introduce editComment mutation to edit comments

TermUI

  • fix a crash when trying to open a bug when there are none by @vojta001
  • properly trim spaces in titles by @wavexx
  • make the help visually easier to parse
  • denser bug list view by @wavexx
  • fixed readability on bright terminal by @zdenek-crha

WebUI

🚀 ☀️

New Contributors

Full Changelog: 0.7.1...v0.8.0

Don't miss a new git-bug release

NewReleases is sending notifications on new releases.