Documentation Index

Fetch the complete documentation index at: https://help.tuleap.com/llms.txt

Use this file to discover all available pages before exploring further.

SVN

Prev Next

This guide presents the operation, configuration, and usage of the Subversion (SVN) service integrated into Tuleap. We will focus on the features provided by Tuleap to manage your source code repositories.

Prerequisite: getting familiar with Subversion

Learning Subversion concepts

Before using the tools, understanding how SVN works is essential.

The book "Version Control with Subversion" (The "SVN Book"), freely accessible online, is the most comprehensive resource for learning how SVN works, from the basics to the most advanced concepts such as branches and merges.

Choosing an SVN client

An SVN client is the software you will install on your computer to communicate with the repository hosted on Tuleap.

  • TortoiseSVN: The most popular client for Windows. It integrates directly into the file explorer, allowing you to perform all SVN operations (commit, update, etc.) via a simple right-click on your files.

  • Command line (svn client): The most direct and universal method. The client can be installed via your distribution's package manager.

  • Additionally, most modern Integrated Development Environments (IDEs) include support for Subversion, either natively or through extensions. Check the installation options for your favorite IDE.

Prerequisites

  • The "SVN" service must be enabled in the administration of your Tuleap instance and in your project administration.

  • You must have a Subversion client (svn) installed on your workstation.

Accessing the SVN service

The SVN service home page lists all existing repositories in the project. Each repository card displays the latest commit information and provides quick access to administration (if you have the required permissions). You can also create new SVN repositories from this page.

Creating an SVN repository

  1. From the SVN service home page, click "Create a new SVN repository".

  2. Enter a unique name for the repository.

  3. Confirm the creation.

The repository is created with an initial directory structure (trunk, branches, tags) and the project's default permissions.

Info

You must be an SVN administrator of the project to create a repository. By default, project administrators have this role.

Browsing a repository

The web interface allows you to explore the content of an SVN repository without needing a Subversion client installed. You can:

  • Browse the directory and file tree.

  • View the content of a file.

  • View the revision history of a file.

  • Compare two revisions of the same file (diff).

  • View line-by-line annotation of a file (blame) to see who modified each line and when.

  • Find the repository root path and the checkout command.

Info

Accessing the web browser requires authentication. Only users with read permissions on the repository can view it.

Authentication

Two authentication methods are available for operations requiring authentication (e.g., commit, checkout on a private project):

  • Password: You can use your Tuleap credentials (when you are not authenticating via OIDC).

  • Personal Access Key: You can use a Personal Access Key with the SVN scope instead of your password. This is the recommended method for scripts and automated tools.

Settings and administration

Administration functions are accessible via the "Settings" button on the SVN service home page or when browsing a repository.

Info

You must be an SVN administrator of the project to access the settings. Project administrators automatically have this role. Other user groups can be authorized through the project permissions configuration.

Email notifications

Tuleap can send an email for each commit in the repository. You can configure multiple notifications, each with:

  • Monitored path: the SVN path on which notifications are sent (e.g., /trunk, /branches/v2).

  • Recipients: users, user groups, or email addresses.

A customizable subject header can be defined per repository to make sorting in your inbox easier.

The email contains the commit message, author, list of impacted files, and links to the diff in the Tuleap web interface.

Access control

Default permissions

Default SVN access permissions depend on the project status (public or private) and user type:

User type

Public project

Private project

Anonymous users

No access

No access

Registered users

Read-only

No access

Project members

Read + Write

Read + Write

Project administrators

Read + Write

Read + Write

Info

If "restricted users" mode is enabled on the platform, only project members have access by default. All source code access is logged and can be viewed in the Access Logs.

Custom permissions

As an SVN administrator, you can redefine access permissions by editing the repository's access control file. The syntax follows the standard SVN format:

[chemin]
nom = permission

Where:

  • chemin is the relative path in the repository.

  • nom is a Tuleap login, a group name preceded by @, or * for any registered user.

  • permission is r (read-only), rw (read + write), or empty (access denied).

Examples:

Restrict write access to a specific team:

[/]
* =
@members = r
@staff = rw

Restrict access to a subfolder:

[/secret]
@members =
@staff = rw

Warning

Permissions are cumulative and the last definition takes precedence. It is recommended to use only Tuleap user groups to define permissions.

Access file version history

Each modification of the access control file is versioned. You can view the version history and revert to a previous version via the version selector in the editing interface. This feature allows you to quickly fix a configuration error without risk.

Info

Default permissions are automatically generated and cannot be modified. You edit additional permissions that are added below them. For more details on the syntax, see the Subversion Book - Path-Based Authorization.

Immutable tags

Immutable tags protect certain repository paths from modifications. Once a file is created in an immutable path, it cannot be modified or deleted, but new files can be added.

Example: with an immutable tag on /tags:

Action

Allowed?

Modify /tags/README.txt

No

Delete /tags/README.txt

No

Add /tags/new_file.txt

Yes

Global whitelist

You can define paths in the global whitelist to allow adding content in subfolders of an immutable path.

Example: with an immutable tag on /tags and a whitelist entry for /tags/module*:

Action

Allowed?

Add /tags/moduleC

Yes

Add /tags/moduleA/new_file.txt

Yes

Modify /tags/moduleA/README.txt

No

Delete /tags/moduleB/README.txt

No

Commit rules

Each SVN repository can be configured with rules applied at commit time:

  • Mandatory reference: if enabled, every commit must contain a reference to a Tuleap Artifact (e.g., art #123). Commits without a reference are rejected.

  • Allow commit message changes: if enabled, the commit message can be modified after the fact via svn propset --revprop. By default, this option is disabled to preserve history integrity.

Info

These rules are configurable per repository, in the "Settings" tab of the SVN repository, or via the REST API.

Maximum file size

The platform administrator can define a maximum individual file size (in megabytes) applicable to all SVN repositories. If a commit contains a file exceeding this limit, it is automatically rejected. Existing files that exceed the limit can no longer be modified, only deleted.

Deleting and restoring a repository

As an SVN administrator, you can delete a repository from its settings. The repository enters a "pending deletion" state, which allows you to restore it from the administration section before it is permanently deleted.

Cross-references with Artifacts

The SVN integration in Tuleap provides a bidirectional cross-reference mechanism between SVN commits and Artifacts:

  • In an SVN commit message, use art #123, bug #456, task #789, etc. to create a link to an Artifact. The reference is automatically transformed into a clickable link.

  • In an Artifact, use revision #YYY or rev #YYY to create a link to an SVN commit.

Tip

It is considered best practice to always reference an Artifact in commit messages, and conversely, to mention revision numbers in Artifact follow-up comments.