##### 16.9.2.1 The VCS node

The `vcs` node is the toplevel node which contains the description of the general behavior expected from the VCS. It has the following attributes:

`name`
  The attribute `name` indicates the identifier of the VCS. The casing of this name is important, and the same casing must be used in the project files.
`absolute_names`
  The attribute `absolute_names` indicates the behavior of the VCS relative to file names, and can take the values `TRUE` or `FALSE`. If it is set to `TRUE`, it means that all commands in the VCS will work on absolute file names. If it set to `FALSE`, it means that all actions work on base file names, and that GPS will move to the appropriate directory before executing an action.
`group_queries_by_directory`
  The attribute `group_queries_by_directory` indicates that, when querying status for all the source files in a directory, a query for the directory should be launched, instead of launching a query for multiple files. This operation is faster on some Version Control systems. By default, this is set to `FALSE`.
`ignore_file`
  The attribute `ignore_file` specifies the name of the file used by the VCS Explorer to get the list of files to ignore. By default for the CVS mode this is set to `.cvsignore`.
`atomic_commands`
  The attribute `atomic_commands` specifies if the VCS supports atomicity and can take the values `TRUE` or `FALSE`. If it is set to `TRUE` it means that the VCS supports atomic commands. It is `FALSE` by default. This attribute is important to trigger the activities group commit feature. See See The VCS Activities.
`path_style`
  The attribute `path_style` specifies which kind of directory separator is supported by the VCS and can take the values `UNIX`, `DOS`, `Cygwin` or `System_Default`. The later value is the default value. With this attribute it is possible to control the directory separator to use when specifying files to the VCS. For the `Cygwin` case the drive is specified as `/cygdrive/<drive>`.
`dir_sep`
  Alias for `path_style`, obsolescent.
`commit_directory`
  The attribute `commit_directory` specifies if the VCS supports commit on directories and can take the values `TRUE` or `FALSE`. If it is set to `TRUE` it means that the VCS supports commit on directories this is the case for `Subversion` for example.
`administrative_directory`
  The attribute `administrative_directory` specifies the name of the directory where the external VCS stores the local repository information. For example for Subversion this is `.svn`. This information is used when the project is setup to select automatically the external VCS. See Version Control System.
`require_log`
  The attribute `require_log` specifies if the VCS require a log for the commit/add/delete actions. It can take the values `TRUE` or `FALSE`. If it is set to `TRUE` GPS will ensure that a log is created for each file. If it is set to `FALSE` GPS will not ask for log, it is expected to be handled by the external VCS.

Note that to support group commit with shared log on GPS both `absolute_name` and `atomic_commands` must be true. This is the case for the Subversion VCS for example.

Here is an example, adapted to the use of CVS:

            <vcs name="Custom CVS" absolute_names="FALSE">

               (... description of action associations ...)
               (... description of supported status ...)
               (... description of output parsers ...)

            </vcs>