Note: This documentation is written for the Classic SourceForge system. The documentation for SVN on the SourceForge 2.0 Beta system is available here.
Not sure if you have a Classic or Beta project? See this guide.
What is Subversion?
Subversion is a Source Code Management (SCM), a tool for software developers which supports collaborative development of software within a team, and the tracking of changes to software source code over time.
Subversion is used by developers, and advanced users who need the very latest changes to the software (before releases occur). Software users generally do not need Subversion; typically they will download official file releases made available by the project instead.
Developers should familiarize themselves with Subversion by reading Version Control with Subversion.
Modern SCM facilities
Here's a nice writeup of why you should consider using a Distributed Version Control System (DVCS), and a comparison of the major DVCSs: http://www.infoq.com/articles/dvcs-guide
Features
SourceForge.net provides the following features in its Subversion offering:
- All standard features of Subversion 1.6.x are supported.
- Developer (read-write) and anonymous (read-only) access are provided via HTTPS.
- Several Subversion clients are supported, including:
- TortoiseSVN (MS Windows).
- The official SVN client (MS Windows, Mac OS X, Linux, BSD).
- Repositories may be viewed via web browser using ViewVC.
- Existing repositories may be imported, preserving history.
- Repository access may be granted or revoked from a developer using the Project Admin interface.
- A versatile set of hook scripts is supported, including:
- svnnotify for email-based commit notifications.
- check-case-insensitive, to ensure filenames are nonconflicting for a case insensitive platform (e.g. MS Windows).
- check-mime-type, to confirm the MIME type property is set appropriately after files are added.
- ciabot_svn for integration with the CIA.vc activity tracking service.
- Administrators may manage the repository at a filesystem level using our Interactive shell service.
- Repository backups and mirroring may be performed using rsync.
- Commit and checkout events are counted in the statistics system.
- Service usage is not restricted by quotas.
Management
Subversion service is enabled by default for all new projects. However, if you have an older project, you can enable subversion for your project as follows:
- Login as a project administrator and go to the Develop page for your project.
- Under the Project Admin dropdown menu, click Feature Settings.
- Under the Available Features tab, check the Enabled checkbox. Your repository will be created within a few minutes.
Once Subversion has been enabled, you will need to grant access before the repository may be written to.
The standard way to modify the contents of your repository is using a Subversion client as detailed in Version Control with Subversion. Administrators may also directly modify the repository contents (such as importing an existing repository or permanently purging a file from the repository).
Administrators may also manually manipulate their repository via the adminrepo tool, and do their own dump / filter / restore work on their Subversion repositories via svnadmin.
Access
To access a Subversion repository, configure your Subversion client as follows (replace PROJECTNAME with the UNIX group name of the project):
- Hostname: PROJECTNAME.svn.sourceforge.net
- Port: 443
- Protocol: HTTPS
- Repository Path: /svnroot/PROJECTNAME
For clients that use a URL string:
https://PROJECTNAME.svn.sourceforge.net/svnroot/PROJECTNAME
Authentication
No username and password will be requested when performing read operations.
When performing write operations, you will be prompted for your SourceForge.net username and password. To perform write operations, your project administrator must have granted you write access to the repository.
Server Certificate Verification Failed
Subversion users may occasionally produce an error indicating that the SSL certificate issuer isn't trusted, giving you an option to accept the certificate:
Error validating server certificate for 'https://fooproject.svn.sourceforge.net:443': - The certificate is not issued by a trusted authority. Use the fingerprint to validate the certificate manually! Certificate information: - Hostname: *.svn.sourceforge.net - Valid: from Tue, 09 Oct 2007 13:15:07 GMT until Mon, 08 Dec 2008 14:15:07 GMT - Issuer: Equifax Secure Certificate Authority, Equifax, US - Fingerprint: fb:75:6c:40:58:ae:21:8c:63:dd:1b:7b:6a:7d:bb:8c:74:36:e7:8a (R)eject, accept (t)emporarily or accept (p)ermanently? p
This typically happens during your first Subversion operation against our servers or when we replace the SSL certificate with a new one.
When you receive this error, we encourage you to validate that the server is the correct server by putting your checkout URL into a trusted web browser (i.e. https://PROJECTNAME.svn.sourceforge.net/svnroot/PROJECTNAME).
You may then check to make sure your browser accepts the certificate. If it does, you can trust the server much like you would any other HTTPS site, like banks, etc.
Once validated you should go back to your Subversion request and tell the client to permanently store the SSL certificate locally so you won't be prompted again until we update our certificate next.
pre-revprop-change
pre-revprop-change is enabled on the Subversion repositories.
To pull in a remote svn repository, issue these commands on your local machine:
$ svnsync initialize DEST_URL SOURCE_URL $ svnsync synchronize DEST_URL
You can run the second command in a cronjob on your local machine and it will pull in any changes. If you run the cron hourly, it may take up to an hour for a new commit to be reflected in your SF mirrored repository.
Backups
SourceForge.net performs routine backups for all of our servers and will restore from these backups in the event of catastrophic server failure. We encourage projects to make their own backups of Subversion data as that data restore can be performed by the project in the event of accidental data destruction by a member of the project team.
Backups of a Subversion repository may be made using rsync.
Example (replace PROJECTNAME with the UNIX group name of your project):
rsync -av PROJECTNAME.svn.sourceforge.net::svn/PROJECTNAME/* .