See also generated documentation(including doxygen generated files) by version:

Version Control API and related modules provide functions for interfacing with the server side of version control systems (VCS). It enables you to track changes in a VCS repository, show a log of commit messages, and control write access to the repository based on site specific settings.

Why is it necessary at all?

On the one hand, because version control is cool, and by integrating it with Drupal it's possible to let the CMS react on changes in the repository and add stuff to nodes. Also, Drupal themes look better than many other VCS web frontends :-P

Objectives

  • No assumptions towards a specific VCS. (Tailoring towards specific feature sets such as “distributed”, “supports directory revisions”, etc., is ok.) Code supporting one VCS should support all of them.
  • Modularize functionality so that sites only need to use the features that they actually need. Should work just as well for sites other than drupal.org.
  • More possibilities through a generic API instead of hardcoded workflows and lots of db queries.
  • Get rid of cvs.module on drupal.org.
  • Make VCS integration with Drupal rock!

The big idea: three layers of responsibility

Version Control API specifies a set of mandatory and optional functions that can be implemented for every common VCS. Backends implement those functions as good as possible. Higher-level modules use those functions for integration purposes.