Central Revision Control System Subversion
As a central version control system we are running a http://subversion.tigris.org subversion
Repository service policy
Repositories on the central server can be created on request. Access will be available via WebDAV
). Send your requests to email@example.com
User management is handeled on a per-repository basis. We offer authentication via the LinuxFarm
, "GSI web login
" Oracle accounts and "roll-your-own" plain Apache username-password-files (
). Anyhow the latter is not recommended as we cannot provide a convenient solution for the management of disjoint accounts by now.
There's also the possibility of unauthenticated (ie. anonymous) read access for the repository, anyhow this does not mix well with read-restricted subtrees.
Per-repository access control
Additional access control on a fine-grained (per-file and per-directory) basis is possible using a so called
. Management of this file is at your disposal.
Access control is managed via a separate repository
resides a file called
. This file is the access rules for the repository repo
The format of the
file is documented here:
As repository admin you can
- checkout that file (
svn co https://subversion.gsi.de/access/repo, authenticate with your GsiLinuxAccount),
- modify it and
- check it in again.
The changes will be activated immediately after commit. Additional admins for the access rule management can only be added by HPC department staff.
Hook-scripts can be defined for the repositories. These scripts will be executed when a specific repository action occurs, i. e. a
hook may send an email to the interested parties whenever changes have been committed.
The hooks are also managed via the
repository (see above).
All repositories are backed up to the TapeStorage
daily including the full revision history. Additionally incremental backups are performed on each commit by default (using a hook).
We offer Trac
as a web-based subversion browser, see https://subversion.gsi.de/trac
. Using Trac's additional features (wiki, tickets) is possible but not well supported by us.
Private subversion repository howto
Instead of using the central server you can also create and use private subversion repositories.
Before creating private subversion repositories you should take a look at http://git-scm.com/ git
or http://mercurial.selenic.com/ mercurial (hg)
that are probably more suited for this purpose.
Anyway here's a small howto for creating and using a personal subversion repository:
- Create the repository with
svnadmin create /path/to/the/repository
- Checkout a working copy:
svn co file:///path/to/the/repository [/path/to/the/working_copy]
(If you omit the working copy path, a now directory named like the repository will be created inside the current directory).
- Access from outside the GSI LinuxFarm is possible via
svn co svn+ssh://lx-pool.gsi.de/path/to/the/repository [/path/to/the/working_copy]
Clients for repository access
svn command line client
Access is currently mainly availabe through the
command line tool (try
for more info).
svn co repository-URL
- create a fresh working copy of the given repository (sub-)tree.
svn update [file]
- sync a local working copy with the newest repository changes. File or directory names may be given on the command line to sync these files/dirs only.
svn add file
- register a new file as part of the current working copy. This is a mandatory step before the file can be commited.
- List files with local changes, and files not in version control yet.
svn diff [file]
- View the changes made to your working copy.
svn ci [file]
- upload local edits to the repository (check-in / commit). A comment has to be given (either interactively or using
-m "comment" on the command line).
- For repository authentication the normal UserID is taken by default. A different UserID may be given using the
--username _userid_ switch of the
Setting the executable bit of a file after import
The special property
controls if a files executable bits are set on checkout.
It is automatically set if the executable bit is already set on
svn import/svn add
If it's set in a working copy only after
import, it will be reset on each
, unless the property has been set manually.
It can be manually (re)set by the following commands:
svn propset svn:executable '' file
svn propdel svn:executable file
Subversion can replace certain keywords in your files on checkin (i. e.
etc.). To activate this, you have to add the keywords to be replaced to the
svn propset svn:keywords "Id LastChangedBy HeadURL" file
The available properties are
. They have to be parenthesized with Dollar signs in the source files.
One can also use wildcards (*) for file
Ignoring whitespace changes on
You can specify the
command and its options when calling
svn diff --diff-cmd diff -x -uw [file ..]
Convert working copies to work with older clients
is installed in
is included in the standard subversion Debian package
. To enable it, append
. After emacs has been restarted the subversion mode can be enabled with
: Windows Shell Extension for Subversion. Very nice graphical interface, completely integrated in the Windows explorer.
$ PushOK svn SCC Proxy
: MS SCC API compliant client, suitable for MS IDEs and e.g.
- 2005 - 2009