Subversion provides many optional behaviors that can be
controlled by the user. Many of these options are of the kind
that a user would wish to apply to all Subversion operations.
So, rather than forcing users to remember command-line arguments
for specifying these options, and to use them for each and every
operation they perform, Subversion uses configuration files,
segregated into a Subversion configuration area.
Configuration Area Layout
The first time that the
svn
command-line client is executed, it creates a per-user
configuration area. On Unix-like systems, this area appears
as a directory named .subversion
in the
user's home directory. On Win32 systems, Subversion creates a
folder named Subversion
, typically inside
the Application Data
area of the user's
profile directory (which, by the way, is usually a hidden
directory). However, on this platform the exact location
differs from system to system, and is dictated by the Windows
registry.
[29]
We will refer to the per-user configuration area using its Unix
name, .subversion
.
In addition to the per-user configuration area, Subversion
also recognizes the existence of a system-wide configuration
area. This gives system administrators the ability to
establish defaults for all users on a given machine. Note
that the system-wide configuration area does not alone dictate
mandatory policy—the settings in the per-user
configuration area override those in the system-wide one, and
command-line arguments supplied to the
svn
program have the final word on behavior. On Unix-like
platforms, the system-wide configuration area is
expected to be the /etc/subversion
directory; on Windows machines, it looks for a
Subversion
directory inside the common
Application Data
location (again, as
specified by the Windows Registry). Unlike the per-user
case, the
svn
program does not attempt
to create the system-wide configuration area.
The configuration area currently contains three
files—two configuration files (config
and
servers
), and a README.txt
file which describes the INI format. At the time of their
creation, the files contain default values for each of the
supported Subversion options, mostly commented out and grouped
with textual descriptions about how the values for the key
affect Subversion's behavior. To change a certain behavior,
you need only to load the appropriate configuration file into
a text editor, and modify the desired option's value. If at
any time you wish to have the default configuration settings
restored, you can simply remove (or rename) your configuration
directory and then run some innocuous
svn
command, such as
svn --version
. A new
configuration directory with the default contents will be
created.
The per-user configuration area also contains a cache of
authentication data. The auth
directory
holds a set of subdirectories that contain pieces of cached
information used by Subversion's various supported
authentication methods. This directory is created in such a
way that only the user herself has permission to read its
contents.