              Managing Client-side Configuration in Subversion
                                     OR
              "How to make Subversion do what I want it to do"

                                 A Treatise


Introduction
============
Subversion provides a number of client-side configurable behaviors.  Some of
these behaviors are dictated by command line arguments (which are then passed
through to the underlying client library APIs), while others are contained
in configuration files read by the various parts of the client at runtime.

In order to better meet the needs of a number of producers and consumers of
configuration data, this document aims to document current behavior, as well
as propose a more comprehensive approach to managing configuration information
for Subversion clients.  For background, see the mailing list discussions and
issues under 'References', below.


Current Infrastructure
======================


Proposed Changes
================

To address some of the failings of the current implementation, the following
changes are proposed:

Goals
-----
 * Provide client library consumers facilities to override configuration

Sources of configuration data
-----------------------------
Configuration data may come from several sources, in no particular order.

File system, first a system-wide configuration file, then user-specific
configuration files.  (On Windows, this information may also be kept in the
registry.)  The commandline client provides an option to override the location
of the configuration directory.

Server-suggested configuration, transmitted from the repository, and cached
on the client.  This feature is not yet implemented, but should be accounted
for.

Options provided by the a libsvn_client API consumer.  API consumers (the
command line client, GUI clients, etc), may wish to provide specific values
for configuration options in the client.



References
==========
dev@s.a.o: "Bikeshed: configuration override order";
    http://svn.haxx.se/dev/archive-2010-08/0166.shtml
dev@s.a.o: "Default commandline args";
    http://svn.haxx.se/dev/archive-2010-12/0449.shtml
Issue 1974: "server-side config which 'broadcasts' to clients";
    https://issues.apache.org/jira/browse/SVN-1974
Issue 3765: "client-configurable default args";
    https://issues.apache.org/jira/browse/SVN-3765
Issue 3769: "Add APIs which allow library consumers to specify configuration options"
    https://issues.apache.org/jira/browse/SVN-3769
