A distributed, collaborative, offline-first issue tracker backed by git
Find a file
Sebastian Kuzminsky 8b41f1ebc6 add a tools directory including a "done-last-week" script
This script lists issues that were marked `Done` between "midnight at
the start of the second most recent Monday" and "midnight at the start
of the most recent Monday".

    $ ./tools/done-last-week
    Done:
    8c73c9fd5bc4f551ee5069035ae6e866       migrate the Todo list into entomologist
    75cefad80aacbf23fc7b9c24a75aa236  🗨️ 4  # implement `ent comment ISSUE [DESCRIPTION]` (👉 seb)
    7da3bd5b72de0a05936b094db5d24304  🗨️ 1  implement `ent edit ${COMMENT}` (👉 seb)
    198a7d56a19f0579fbc04f2ee9cc234f       fix ignoring unknown file in issues directory: "README.md"
    e089400e8a9e11fe9bf10d50b2f889d7       add `ent sync` to keep local `entomologist-data` branch in sync with remote
    a26da230276d317e85f9fcca41c19d2e       `ent edit ${ISSUE}` with no change fails (👉 seb)
    317ea8ccac1d414cde55771321bdec30  🗨️ 2  allow multiple read-only ent processes simultaneously (👉 seb)
    da435e5e298b28dc223f9dcfe62a9140       add user control over state transitions (👉 lex)
    fd81241f795333b64e7911cfb1b57c8f       commit messages in the `entomologist-data` branch could be better (👉 seb)
    093e87e8049b93bfa2d8fcd544cae75f       add optional 'assignee' to issue (👉 seb)
    793bda8b9726b0336d97e856895907f8       `ent list` should have a consistent sort order (👉 seb)
    af53c561b36e9b2709b939f81daee534       use git author info to attribute issues and comments to people (👉 seb)
    9e69a30ad6965d7488514584c97ac63c       teach `ent list FILTER` to filter by assignee (👉 seb)
    a5ac277614ea4d13f78031abb25ea7d6       `ent new` and `ent comment`: detect empty issue descriptions & comments (👉 seb)
    7d2d236668872cf11f167ac0462f8751  🗨️ 1  add `ent tag ISSUE [[-]TAG]` (👉 seb)
    54f0eb67b05aa10763c86869ce840f33       `ent sync` should report what changes got fetched & what changes will be pushed (👉 seb)
    4e314a8590864fa76d22758e1785ae35       don't spawn an editor if stdin & stdout aren't a terminal (👉 seb)
    d3a705245bd69aa56524b80b5ae0bc26  🗨️ 1  move IssuesDatabase out of binary and into library (👉 sigil-03)
2025-07-19 20:29:06 -06:00
src Issues::new_from_dir(): move error message to stderr 2025-07-19 10:52:33 -06:00
test Issue: add done_time field 2025-07-16 21:50:44 -06:00
tools add a tools directory including a "done-last-week" script 2025-07-19 20:29:06 -06:00
.gitignore git ignore Cargo.lock 2025-07-03 16:51:52 -06:00
Cargo.toml ent: better ent list --help 2025-07-12 14:24:20 -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
Todo.md did some todo items 2025-07-06 00:36:51 -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.