In my previous workplace we have used Gerrit as a code review tool for git to share and review each other's modifications on a web-based interface and give feedback and a chance to improve the code before merging.
It supports reviewing code (and rejecting it) before/without merging it into the master branch. Is there any other code review tool which supports pre-commit/merge reviews?
(Please don't constrain your answer to git, I'd be also interested in code review tools for other revision control systems like Mercurial or Subversion.)
I have never used any code review tool other than Gerrit and GitLab (see below), but here are some that I know about (all of these are for Git, because that is what I know, but some may work with other Revision Control Systems):
Phabricator has lots of features for Software Engineering, and code review is one of them. It also looks like it has a much nicer interface than Gerrit, and the fact that it is PHP instead of Java/GWT means that it is likely easier to build and test your own modifications to it. See https://secure.phabricator.com/D8141 for an example review task.
Gitlab is an open-source Github clone. The way you would use it as a code-review tools is by having each developer create a fork, work on that fork, and submit Merge Requests.
Barkeep is much simpler than the other options above, as it is only a review tool, without any other features. It is also post-commit, instead of pre-commit, though its purpose is review like the pre-commit tools (as opposed to auditing like most other post-commit tools).
ReviewBoard is the last one that I know of offhand, but I know nothing about it other than that it exists.
I've always used TortoiseHg for my mercurial GUI needs on Windows, which has very nice pre-commit / merge support. You can always right-click on the Working Directory in the changeset view and select Diff to Parent to open your selected diff tool with all the changes in your current repository before you commit. You can also select any changeset and Diff to Local before you merge to see what is going to happen.
TortoiseGit is the Git counterpart to TortoiseHg, but I'm not sure if all the UI is on the same parity level. Git has always felt clunky and unnatural coming from Mercurial to me, so I've never built up a proper workflow with it.
SourceTree also has great support of previewing changes before commit and before merge for both Mercurial and Git
Deveo supports pre-merge code reviews for both Git and Mercurial. Subversion support is coming later on. The following blog posts describes the workflow for Git, and Mercurial respectively. There's a video attached of the workflow in the Mercurial post.