| 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 |