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