Before this commit:
change state of issue f3990ac13cd93a925f2a66e6a72eb0f2 to backlog
After this commit:
change state of issue 406e2330695040fed5fdbcaae5d2b331, new -> inprogress
Instead of a two-step process handled by the application
(`Issue::new_comment()` and `Comment::set_description()` or
`Comment::edit_description()`), make a simpler-to-use single-step
`Issue::add_comment()`.
Move the implementation details from Issue to Comment.
Better log message when adding a comment.
This starts cleaning up the Issue API.
* Start separating the public API from the internal API.
* Make `Issue::new()` and `Issue::edit_description()` better behaved,
simpler, reduce code duplication, and also produce better git log
messages.
* Update `ent` to call the changed `new()` function.
* Add some comments documenting the Issue API.
* `ent new` and `ent edit` now use the editor specified by the EDITOR
environment variable, if any. Defaults to `vi` if unspecified.
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
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.