vc-dwim is a version-control-agnostic ChangeLog diff and commit tool. vc-chlog is a ChangeLog writing helper tool.
Both tools are useful if you like to maintain a ChangeLog file describing the changes you make to version-controlled files. vc-dwim works with the following version control systems: bzr, CVS, git, mercurial, SVN, and darcs. It should be easy to add support for more.
vc-dwim can save you from making some small mistakes when using version control programs from the command line.
For example, if you have unsaved changes in an editor buffer and use vc-dwim to print diffs or to commit changes involving that file, it will detect the problem, tell you about it, and fail. This works as long as you use Emacs or Vim.
Another common error you can avoid with this tool is the one where you
create a new file, add its name to Makefiles, etc., mention the
addition in a ChangeLog, but forget to e.g.,
git add (or
hg add, etc.) the file to the version control system. vc-dwim
detects this discrepancy and fails with a diagnostic explaining the
probable situation. You might also have simply mistyped the file name
in the ChangeLog.
Also, vc-dwim makes it a little easier/safer to commit a strict subset of the modified files in a working directory. But no one ever does that.