vc-dwim operates based on a ChangeLog file; if you maintain a ChangeLog as part of your source tree, you don’t need to do anything special to set up to use vc-dwim; just run it.
However, it is common practice nowadays for source trees not to have
ChangeLog files, but instead to have them derived for distributions or
on demand (
make ChangeLog, with one common GNU infrastructure).
So, how to use vc-dwim in this case? It still needs a ChangeLog.
The answer is to run
vc-dwim --initialize. This sets up your own,
private ChangeLog file in a git repository rooted at
VCDIR/c/, with a symlink to it from the top level directory
of the source tree in which you’d like to use vc-dwim.
Your own source tree need not use git; VCDIR in the above refers to the version-control system’s control directory, such as .svn, _darcs, etc., as well as .git. The VCDIR/c/.git repository is always independent of your own source tree.
Then you can make ChangeLog entries as usual, and proceed with use of vc-dwim.
You can also set up your own repository of whatever type and make your
own symlinked top-level ChangeLog into it; there’s nothing magical about
--initialize or the VCDIR/c/ location.