[[PageOutline]] '''''Note:''''' This documentation is written for the Classic !SourceForge system. The documentation for SVN on the !SourceForge 2.0 Beta system is available [http://sourceforge.net/p/forge/documentation/svn%20-%20Beta/ here]. Not sure if you have a Classic or Beta project? See [http://sourceforge.net/p/forge/documentation/Classic%20vs%20Beta%20projects/ this guide]. = What is Subversion? = Subversion is a [wiki:"What is Source Code Management?" 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 [wiki:"Release files for download" download official file releases] made available by the project instead. Developers should familiarize themselves with Subversion by reading [http://svnbook.red-bean.com/ 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 = [wiki:"What is SourceForge.net?" SourceForge.net] provides the following features in its [wiki:"Subversion#What is Subversion?" Subversion] offering: * All [http://subversion.apache.org/docs/release-notes/1.6.html standard features of Subversion 1.6.x] are supported. * [wiki:"Subversion#Access" Developer (read-write) and anonymous (read-only) access] are provided via HTTPS. * Several Subversion clients are supported, including: * [wiki:"TortoiseSVN instructions" TortoiseSVN] (MS Windows). * [wiki:"Subversion client instructions" The official SVN client] (MS Windows, Mac OS X, Linux, BSD). * Repositories may be viewed via web browser using [wiki:"ViewVC repository browser" ViewVC]. * Existing repositories may be [wiki:"SVN adminrepo#ImportingfromotherreposincludingotherSCMs" imported], preserving history. * [wiki:"Subversion permissions management" Repository access may be granted or revoked from a developer using the Project Admin interface]. * A versatile set of [wiki:"Subversion hook scripts" hook scripts] is supported, including: * [wiki:"Subversion hook scripts#svnnotify" svnnotify] for email-based commit notifications. * [wiki:"Subversion hook scripts#check-case-insensitive" check-case-insensitive], to ensure filenames are nonconflicting for a case insensitive platform (e.g. MS Windows). * [wiki:"Subversion hook scripts#check-mime-type" check-mime-type], to confirm the MIME type property is set appropriately after files are added. * [wiki:"Subversion hook scripts#ciabot_svn" ciabot_svn] for integration with the CIA.vc activity tracking service. * Administrators may manage the repository at a filesystem level using our [wiki:"Shell service" "Interactive shell service"]. * [wiki:"Subversion#Backups" Repository backups and mirroring may be performed using rsync.] * Commit and checkout events are counted in the [wiki:"Project statistics" statistics system]. * Service usage is not restricted by [wiki:"Disk quotas" 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: 1. Login as a project administrator and go to the Develop page for your project. 1. Under the Project Admin dropdown menu, click Feature Settings. 1. 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 [wiki:"Subversion permissions management" 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 [http://svnbook.red-bean.com/ Version Control with Subversion]. Administrators may also [wiki:"Subversion repository administration" 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 [wiki:"SVN adminrepo" 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 [wiki:"Subversion permissions management" 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 [wiki:"Using rsync for backups" rsync]. Example (replace PROJECTNAME with the UNIX group name of your project): {{{ rsync -av PROJECTNAME.svn.sourceforge.net::svn/PROJECTNAME/* . }}} = Getting Help = * [wiki:"Support"] * [wiki:"Request an enhancement"] [[Include(__footer)]]