A distributed, collaborative, offline-first issue tracker backed by git
Find a file
2025-07-26 10:44:34 -06:00
src test dir cleanup: rename test/0002/dd79c8cfb8beeacd0460429944b4ecbe 2025-07-24 10:20:03 -06:00
test test dir cleanup: rename test/0002/dd79c8cfb8beeacd0460429944b4ecbe 2025-07-24 10:20:03 -06:00
tools add time-ent tool to measure runtime of different ent commands 2025-07-22 10:41:22 -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 flesh out the README some 2025-07-12 14:54:48 -06:00

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

Quick start

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.