You can take a look at Phabricator. It is a nice all-in-one software project management application which handles code reviews similar to what you described and does a lot more around software development.
I don't want to recommend a tool to you, but I want to show you what idea they have about code reviews, which I consider solid and practicable.
The entire development process within Phabricator is documented, not only code reviews, because it wires all information by using identifiers that get translated into links automatically and produce references with dates, times and users that are involved in actions.
Here is what a code review in Phabricator looks like (to address your question more specifically):
- Developer creates a new branch in local git repository and makes a commit with his changes.
- Developer starts
arc diff
to lint and test the changes and to create a code review (called "differential"). Some metadata can be added at this point.
- Phabricator receives the differential and makes it available to other developers in this project.
- Other developers can comment the changeset and annotate it. The author can update the differential.
- The reviewers can accept or reject the differential.
- The author can then abandon the differential or commit it (
arc land
).
- The repository receives the commit and wires it automatically with the differential. And the differential is also wired with the commit and/or the actions that lead to the result.
Phabricator is developed very quickly and is itself developed in an own public instance of Phabricator.