Apache Subversion
Appearance
![]() | This article or section is in a state of significant expansion or restructuring. You are welcome to assist in its construction by editing it as well. If this article or section has not been edited in several days, please remove this template. If you are the editor who added this template and you are actively editing, please be sure to replace this template with {{in use}} during the active editing session. Click on the link for template parameters to use.
This article was last edited by Mpeg4codec (talk | contribs) 19 years ago. (Update timer) |
File:Subversion.png | |
Developer(s) | CollabNet, Inc. |
---|---|
Stable release | |
Repository | |
Operating system | Linux, Windows, Mac OS X |
Type | revision control |
License | Apache/BSD Style |
Website | Subversion Home |
Subversion is an open source application used for revision control. It is sometimes known as svn in reference to the name of its command line interface. Subversion is designed specifically to be a modern replacement for CVS and shares a number of the same key developers.
Improvements over CVS
Subversion was created as a replacement for CVS. Its improvements include:
- Atomic commits. Interrupted commit operations do not cause repository inconsistency or corruption.
- Renamed/copied/moved/removed files retain full revision history.
- Native support for binary files, with space-efficient binary-diff storage.
- Directories are versioned. Entire directory trees can be moved around and/or copied very quickly, and retain full revision history.
- Constant time branching and tagging.
- Optimized repository accesses. This reduces unnecessary network traffic to the repository host.
- Full MIME support - the MIME Type of each file can be viewed or changed, with the software knowing which MIME types can have their differences from previous versions shown.
Features
Version 1.3 (released 1 January, 2006):
- Path-based authorization for svnserve
- Improved logging and repository listing in mod_dav_svn
- Hugely improved Python and Ruby bindings
- A handful of new command line switches
- Some client and server performance improvements
- Many improved APIs
- More than 30 new bugfixes
Version 1.2 (released May 2005):
- File locking for unmergeable files ("reserved checkouts")
- Full WebDAV auto-versioning
Version 1.1 added these features among others:
- Internationalised program messages
- Versioning of symbolic links
- A new repository format, "flat filesystem" (FSFS), which doesn't use a Berkeley database backend, instead storing the revisions as plain files in the file system.
Version 1.0 of Subversion (released 23 February, 2004) offers the following features:
- Most current CVS features
- Directories, renames, and file metadata are versioned
- Commits are truly atomic operations
- Apache HTTP server as network server, WebDAV/DeltaV for protocol (there is also an independent server process that uses a custom protocol over TCP/IP)
- Branching and tagging are cheap (constant time) operations
- Natively client/server, layered library design
- Client/server protocol sends diffs in both directions
- Costs are proportional to change size, not data size
- Efficient handling of binary files
- Parsable output (including XML log output)
- Open Source licensed — "CollabNet/Tigris.org Apache-style license"
Repository access
As of version 1.3, Subversion repositories can be accessed by the following means:
- Local filesystem or network filesystem,[1] accessed by client directly.
- WebDAV/DeltaV (over http or https) using the mod_dav_svn module for Apache 2.
- Custom "svn" protocol, either plaintext or over SSH.
All three means can access both FSFS and Berkeley DB repositories.
Related Software
GUI front-ends/clients
- AnkhSVN is a Visual Studio .NET addin. It allows you to perform the most common Subversion operations from directly inside the VS.NET IDE.
- eSvn, a Qt-based Subversion client.
- gsvn, mostly abandoned by its original authors, due to lack of time; written entirely in python, using GTK+.
- JSVN, a proof-of-concept Java Swing client.
- kdesvn, another Subversion client for KDE.
- RapidSVN, a cross-platform (Linux, Win32) GUI front-end written in C++ using the wxWidgets framework.
- SCPlugin, a Mac OS X plug-in for the Finder.
- SmartSVN is a cross-platform (Linux, Mac OS X, Win32) client for Subversion; available as a free Foundation version and as a commercial Professional version. It makes use of the JavaSVN library, a 100% pure Java implementation of Subversion.
- Subcommander, a cross-platform (Linux, Win32, Mac OS X) GUI front-end written in C++ using the Qt framework.
- svnX, a Mac OS X GUI front-end to command line Subversion.
- TortoiseSVN, a Windows shell (i.e. Explorer) extension.
- Insurrection Web interface for Subversion.
- WebClient for SVN an open source cross-platform (Linux, Win32, Mac OS X) Subversion web client written in Java/JSP. It offers a convenient way of browsing the repository content and its history plus simple write operations.
- ZigVersion, a commercial Mac OS X Subversion client.
- psvn.el A Subversion interface for Emacs.
Other projects of note
- The open source Subclipse project integrates Subversion into Eclipse.
- The open source JavaSVN project is a 100% pure Java Subversion client library.
- SVN Importer is a free tool for importing content from other version control systems to a Subversion (SVN) repository
- CIA is a piece of software that notifies people of repository activity. It is named after the CIA because its role is to "keep an eye on subversion".
- The open source Subversive plugin for Eclipse.
- svnmerge, which helps keep track of what changes what merges have and have not occurred on branches.
See also
- List of revision control software
- Trac - integrates Subversion with Wiki software
- SVK - which is compatible with SVN repositories, and avoids the annoyingly large .svn metadata directories in the working copy
References and notes
- ^ Berkeley DB relies on file locking and thus should not be used on (network) filesystems which do not implement them
- C. Michael Pilato, Ben Collins-Sussman, Brian W. Fitzpatrick; Version Control with Subversion; O'Reilly; ISBN 0596004486 (1st edition, paperback, 2004, full book online at http://svnbook.red-bean.com/)
- Garrett Rooney; Practical Subversion; Apress; ISBN 1590592905 (1st edition, paperback, 2005)
- Mike Mason; Pragmatic Version Control Using Subversion; Pragmatic Bookshelf; ISBN 0974514063 (1st edition, paperback, 2005)
- William Nagel; Subversion Version Control: Using the Subversion Version Control System in Development Projects; Prentice Hall; ISBN 0131855182 (1st edition, paperback, 2005)
External links
- Subversion home page
- Subversion has an IRC channel on irc.freenode.net #svn.
- The Dmoz entry for Subversion
- "Version Control with Subversion" home page, free book.
- Version Control for non-programmers with Subversion
- Subversion Forum - SVNForum.org
- Combined Subversion and CVS tutorial
- Ajax and Rails Powered SVN Browser
- FSVS - version complete filesystems or directories (including modification time, owner, group and access-mode) into a subversion repository.