## Overview

This project uses [Subversion](http://subversion.tigris.org) to manage its source code. Instructions on Subversion use can be found at [http://svnbook.red-bean.com/](http://svnbook.red-bean.com/).

## Web Access

The following is a link to the online source repository.

[http://svn.apache.org/viewvc/velocity/engine/trunk](http://svn.apache.org/viewvc/velocity/engine/trunk)
{.frame}

## Anonymous access

The source can be checked out anonymously from SVN with this command:

    :::shell
    $ svn checkout http://svn.apache.org/repos/asf/velocity/engine/trunk velocity

## Developer access

Everyone can access the Subversion repository via HTTP, but Committers must checkout the Subversion repository via HTTPS.

    :::shell
    $ svn checkout https://svn.apache.org/repos/asf/velocity/engine/trunk velocity

To commit changes to the repository, execute the following command to commit your changes (svn will prompt you for your password)

    :::shell
    $ svn commit --username your-username -m "A message"

## Access from behind a firewall

For those users who are stuck behind a corporate firewall which is blocking HTTP access to the Subversion repository, you can try to access it via the developer connection:

    :::shell
    $ svn checkout https://svn.apache.org/repos/asf/velocity/engine/trunk velocity

## Access through a proxy

The Subversion client can go through a proxy, if you configure it to do so. First, edit your "servers" configuration file to indicate which proxy to use. The file's location depends on your operating system. On Linux or Unix it is located in the directory "~/.subversion". On Windows it is in "%APPDATA%\Subversion". (Try "echo %APPDATA%", note this is a hidden directory.)

There are comments in the file explaining what to do. If you don't have that file, get the latest Subversion client and run any command; this will cause the configuration directory and template files to be created.

Example: Edit the 'servers' file and add something like:

    :::properties
    [global]
    http-proxy-host = your.proxy.name
    http-proxy-port = 3128
