Formalize how to handle multiple review requests on a commit.
Previously, the tool was taking the last request in a note as being
the current one, and relying on the combination of appending notes
and merging them using "cat_sort_uniq" to make that correspond to
the request with the latest timestamp.
However, that was neither as robust as it could be, nor was it
documented in our spec.
This change makes the tool pick the last request by timestamp, and
updates the spec to indicate that this is how the notes should be
This change also makes the sorting of both requests and comments stable,
and extends the Summary struct to store all of the review requests in
addition to storing the current one.
This change is a (partial) response to feedback in
@@ -147,6 +147,15 @@ The "reviewRef" field is used to specify a git ref that tracks the current
revision under review, and the "targetRef" field is used to specify the git ref
that should be updated once the review is approved.
If there are multiple requests for a single commit, then they are sorted by
timestamp and the final request is treated as the current one. This sorting
should be done in a stable manner, so that if there are multiple requests
with the same timestamp, then the last such request in the note is treated
as the current one.
This design allows a user to update a review request by re-running the
`git appraise request` command.
### Continuous Integration Status
Continuous integration build and test results are stored in the