right-speech-bubble is not part of the recommended unicode
emoji presentation set, but left-speech-bubble is and therefore, it's
more commonly supported
I'm not sure about the filter format...
There are two independent filters: "state" and "assignee". The "state"
filter defaults to including issues whose state is InProgress, Blocked,
Backlog, or New. The "assignee" filter defaults to including all issues,
assigned or not.
The two filters can be independently overridden by the `ent list
FILTER` command. FILTER is a string containing chunks separated by
":", like the PATH environment variable. Each chunk is of the form
"name=value[,value...]". "name" can be either "state" or "assignee".
The "value" arguments to the "state" filter must be one of the valid
states, or it's a parse error.
The "value" arguments to the "assignee" filter are used to
string-compare against the issues "assignee" field, exact matches are
accepted and everything else is rejected. A special assignee filter of
the empty string matches issues that don't have an assignee.
Some examples:
* `ent list` shows issues in the states listed above, and don't filter
based on assignee at all.
* `ent list assignee=seb` shows issues in the states listed above,
but only if the assignee is "seb".
* `ent list assignee=seb,` shows issues in the states listed above,
but only if the assignee is "seb" or if there is no assignee.
* `ent list state=done` shows all issues in the Done state.
* `ent list state=done:assignee=seb` shows issues in the Done state that
are assigned to "seb".
This commit makes a couple of changes:
- `ent show ISSUE` now displays the Issue's Comments in chronological
order
- the Comment struct now includes a timestamp, which is the Author Time
of the oldest commit that touches the comment's directory
- the Issue struct now stores its Comments in a sorted Vec, not in
a HashMap
- The Comment's uuid moved into the Comment struct itself, instead of
being the key in the Issue's HashMap of Comments
In a worktree with the `entomologist-data` branch checked out in it:
1. `git fetch REMOTE`
2. `git merge REMOTE/BRANCH`
3. `git push REMOTE BRANCH`
Pretty straight-forward. If anything goes wrong we error out and ask
the human to help.
The Issue struct is a cache of files on disk. There is never an Issue
without a directory to live in.
This commit adds a field to Issue to track what that directory is, so
that we can update those filew when we change the Issue, and commit the
changes to git.