blob: 054f82ded61e3b37662124c2ddf1145fa5ebaf7b [file] [log] [blame]
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";
http://subversion.tigris.org/issues/show_bug.cgi?id=1974
Issue 3765: "client-configurable default args";
http://subversion.tigris.org/issues/show_bug.cgi?id=3765
Issue 3769: "Add APIs which allow library consumers to specify configuration options"
http://subversion.tigris.org/issues/show_bug.cgi?id=3769