<type>documentation</type>
<domain>versioncontrol</domain>
<id>svn</id>
<title>Subversion</title>
<date>$Date: 2006-05-24 22:53:07 -0400 (Wed, 24 May 2006) $</date>
<version>$Revision: 13098 $</version>
<product>pro+</product>

Wing's Subversion integration requires the ``svn`` command line executable to be installed
separately from Wing. Please see http://subversion.tigris.org/ for information about
Subversion. The ``svn`` executable may either be in your path or set with the `Version
Control > SVN > SVN Executable
<script:show_preferences_gui#prefname="versioncontrol.svn.executable">`__ preference.

The Subversion integration works best if usernames and passwords are handled by an SSH
agent. For details on this see `SSH Setup Details <ref:proj/ssh-setup-details>`__ and the
Subversion documentation.

Using SSH is preferred because there is no safe way to interact with the ``svn``
executable to pass it a username and password. The ``--username`` and ``--password``
command line arguments can be used, but will expose the password to anyone on the system
who can list process command lines. If there is no alternative, these can be specified in
the `Version Control > SVN > Extra Global Arguments
<script:show_preferences_gui#prefname="versioncontrol.svn.extra-global-args">`__
preference.

Subversion defines the following commands, in addition to those documented in `Common
Version Control Operations <ref:versioncontrol/common-operations>`__:

**Update** updates the local copy with changes from the repository.

**Resolved** indicates that a conflict that arose during ``update`` has been resolved.
Files that are in conflict cannot be checked in with ``commit`` until the ``resolved``
operation is completed.

**Blame/Praise** displays the the revision number and author for every line in a file.

**Last Revision Diff** shows the differences in the most recently committed change
set for a file.

**Update Project** updates all the directories in the project with changes from
the repository.
