How do I configure the SVN HTTP proxy from the command line?

William Payne picture William Payne · May 20, 2013 · Viewed 13.3k times · Source

I script the set up of my build environment. (So the build process can bootstrap itself if it finds itself running on a clean image).

As part of this process, certain dependencies are retrieved from public SVN repositories.

The build machines sit behind a proxy, so I need to configure SVN to use the proxy.

Several of the options that come immediately to mind are unpalatable for various reasons:

  • I could edit the ~/.subversion/servers file manually, but I would far rather keep the build process as self-contained and as automated as possible.
  • Alternatively, I could "proxy" the various public subversion repositories with an internal "dependencies" repository, but this adds to the number of moving parts that need to be maintained.
  • Finally, I could write a script to check the configuration file and modify it (if needed), but this seems like overkill for what should be a trivial part of the build process.

Ideally, I should be able to specify the proxy from the command line, but it is not obvious that this is possible. What is the right way to approach this problem?

Answer

bahrep picture bahrep · May 20, 2013

SVNBook to the rescue!

  1. As you've already mentioned, you can add SVN configuration options to svn command-line client.

    See SVNBook | --config-option command-line reference.

    Sets, for the duration of the command, the value of a runtime configuration option. CONFSPEC is a string which specifies the configuration option namespace, name and value that you'd like to assign, formatted as FILE:SECTION:OPTION=[VALUE]. In this syntax, FILE and SECTION are the runtime configuration file (either config or servers) and the section thereof, respectively, which contain the option whose value you wish to change. OPTION is, of course, the option itself, and VALUE the value (if any) you wish to assign to the option. For example, to temporarily disable the use of the automatic property setting feature, use --config-option=config:miscellany:enable-auto-props=no. You can use this option multiple times to change multiple option values simultaneously.

    Here is the sample command-line:

    svn checkout ^
    --config-option servers:global:http-proxy-host=<PROXY-HOST> ^
    --config-option servers:global:http-proxy-port=<PORT> <REPO-URL> <LWC-DIR>

  2. Or use --config-dir to point svn command-line client to customized configuration file.

    --config-dir DIR

    Instructs Subversion to read configuration information from the specified directory instead of the default location (.subversion in the user's home directory).