A distributed, collaborative, offline-first issue tracker backed by git
  • Rust 94.7%
  • Shell 5.3%
Find a file
Sebastian Kuzminsky f5c4aab7f6
Some checks failed
Code Checks / clippy (push) Has been cancelled
Code Checks / test (push) Has been cancelled
better ent state --help output
2025-10-23 12:57:55 -06:00
.github/workflows github CI: fail on clippy warnings 2025-08-24 11:39:06 -06:00
src better ent state --help output 2025-10-23 12:57:55 -06:00
test test issue with author and creation_time files 2025-08-16 14:21:30 -06:00
tests add integration tests with git remotes 2025-08-15 22:57:03 -06:00
tools add tools/add-author-creation_time-files 2025-08-16 14:21:30 -06:00
.gitignore git ignore Cargo.lock 2025-07-03 16:51:52 -06:00
Cargo.toml switch to pretty_assertions, makes it much easier to tell what blew up 2025-07-23 18:02:54 -06:00
install.sh install.sh: use /usr/local/bin not /usr/bin 2025-07-07 12:40:03 -06:00
README.md README: minor fixes 2025-08-07 10:14:35 -06:00

Entomologist is a distributed, collaborative, offline-first issue tracker, backed by git.

Quick start

git clone this repo and cargo build.

Entomologist provides a single executable called ent which performs all interaction with the issues database. ent --help provides terse usage info.

No initialization is needed, just start using ent inside your git repo:

$ git clone git@server:my-repo.git
$ cd my-repo
$ ent list
# no issues shown, unless my-repo contained some already

Create an issue:

$ ent new
# Starts your $EDITOR.  Type in the issue description, "git-commit
# style" with a title line, optionally followed by an empty line and
# free form text.

List issues with ent list. Optionally takes a filter argument that controls which issues are shown, see ent list --help for details. For example, to show only new and backlog issues assigned to me or unassigned, run ent list state=new,backlog assignee=$(whoami),.

Show all details of an issue with ent show.

Modify the state of an issue using ent state. Supported states are New, Backlog, InProgress, Done, and WontDo.

Assign an issue to a person using ent assign. The person is just a free-form text field for now. Make it a name, or an email address, or whatever you want.

Add a comment on an issue with ent comment.

Edit an issue or a comment with ent edit.

Add or remove tags on an issue using ent tag.

Synchronization

Synchronize your local issue database with the server using ent sync. This will:

  1. Fetch the remote issue database branch into your local repo.

  2. Show the list of local changes not yet on the remote.

  3. Show the list of remote changes not yet incorporated into the local branch.

  4. Merge the branches.

  5. Push the result back to the remote.

Step 4 might fail if (for example) both sides edited the same issue in a way that git can't merge automatically. In this case, check out the entomologist-data branch, merge by hand and resolve the conflicts, and run ent sync again.

Git storage

Issues are stored in a normal orphan branch in a git repo, next to but independent of whatever else is stored in the repo. The default branch name is entomologist-data.

Anyone who has a clone of the repo has the complete issue database.

Anyone who has write-access to the repo can modify the issue database. The issue database branch can be modified by pull request, same as any other branch.