Apache Subversion Explained
Apache Subversion (often abbreviated SVN, after its command name svn) is a version control system distributed as open source under the Apache License.[1] Software developers use Subversion to maintain current and historical versions of files such as source code, web pages, and documentation. Its goal is to be a mostly compatible successor to the widely used Concurrent Versions System (CVS).
The open source community has used Subversion widely: for example, in projects such as Apache Software Foundation, FreeBSD, SourceForge, and from 2006 to 2019, GCC. CodePlex was previously a common host for Subversion repositories.
Subversion was created by CollabNet Inc. in 2000, and is now a top-level Apache project being built and used by a global community of contributors.[2]
History
CollabNet founded the Subversion project in 2000 as an effort to write an open-source version-control system which operated much like CVS but which fixed the bugs and supplied some features missing in CVS. By 2001, Subversion had advanced sufficiently to host its own source code,[3] and in February 2004, version 1.0 was released.[4] In November 2009, Subversion was accepted into Apache Incubator: this marked the beginning of the process to become a standard top-level Apache project.[5] It became a top-level Apache project on February 17, 2010.[6]
Version | Original release date | Latest version | Latest release date | Status |
---|
| 2004-02-23 | 1.0.9 | 2004-10-13 | No longer supported |
| 2004-09-29[7] | 1.1.4 | 2005-04-01 | No longer supported |
| 2005-05-21[8] | 1.2.3 | 2005-08-19 | No longer supported |
| 2005-12-30[9] | 1.3.2 | 2006-05-23 | No longer supported |
| 2006-09-10[10] | 1.4.6 | 2007-12-21 | No longer supported |
| 2008-06-19[11] | 1.5.9 | 2010-12-06 | No longer supported |
| 2009-03-20[12] | 1.6.23 | 2013-05-30 | No longer supported |
| 2011-10-11[13] | 1.7.22 | 2015-08-12 | No longer supported |
| 2013-06-18[14] | 1.8.19 | 2017-08-10 | No longer supported |
| 2015-08-05[15] | 1.9.12 | 2019-07-24 | No longer supported |
| 2018-04-13[16] | 1.10.8 | 2022-04-12 | No longer supported |
| 2018-10-30[17] | 1.11.1 | 2019-01-11 | No longer supported |
| 2019-04-24[18] | 1.12.2 | 2019-07-24 | No longer supported |
| 2019-10-30[19] | 1.13.0 | 2019-10-30 | No longer supported |
| 2020-05-27[20] | 1.14.4[21] [22] [23] | 2024-10-08 | Fully supported, LTS |
| 20XX | 1.15.0 | (Not yet released) | In development |
| |
Release dates are extracted from Apache Subversion's file,[24] which records all release history.
Features
- Commits as true atomic operations (interrupted commit operations in CVS would cause repository inconsistency or corruption).
- The system maintains versioning for directories and some specific file metadata (see Properties). Users can move or copy files and entire directory-trees very quickly, while retaining full revision history (as being implemented by a reference to the original object).
- Versioning of symbolic links.
- Native support for binary files, with space-efficient binary-diff storage.
- Apache HTTP Server as network server, WebDAV/Delta-V for protocol. There is also an independent server process called svnserve that uses a custom protocol over TCP/IP.
- Branching is implemented by a copy of a directory, thus it is a cheap operation, independent of file size.
- Natively client–server, layered library design.
- Client/server protocol sends diffs in both directions.
- Parsable output, including XML log output.
- Open source licensed – Apache License since the 1.7 release; prior versions use a derivative of the Apache Software License 1.1.
- Internationalized program messages.
- File locking for unmergeable files ("reserved checkouts").
- Path-based authorization.
- Language bindings for C#, PHP, Python, Perl, Ruby, and Java.
- Full MIME support – users can view or change the MIME type of each file, with the software knowing which MIME types can have their differences from previous versions shown.
- Merge tracking – merges between branches will be tracked, this allows automatic merging between branches without telling Subversion what does and does not need to be merged.
- Changelists to organize commits into commit groups.
Repository types
Subversion offers two types of repository storage.
Berkeley DB (deprecated)
The original development of Subversion used the Berkeley DB package.Subversion has some limitations with Berkeley DB usage when a program that accesses the database crashes or terminates forcibly. No data loss or corruption occurs, but the repository remains offline while Berkeley DB replays the journal and cleans up any outstanding locks. The safest way to use Subversion with a Berkeley DB repository involves a single server-process running as one user (instead of through a shared filesystem).[25] The Berkeley DB backend was deprecated in version 1.8.[26]
FSFS
In 2004, a new storage subsystem was developed and named FSFS.It works faster than the Berkeley DB backend on directories with a large number of files and takes less disk space,due to less logging.[25]
Beginning with Subversion 1.2, FSFS became the default data store for new repositories.
The etymology of "FSFS" is based on Subversion's use of the term "filesystem" for its repository storage system.FSFS stores its contents directly within the operating system's filesystem, rather than a structured system like Berkeley DB.Thus, it is a "[Subversion] FileSystem atop the FileSystem".
FSX
A new filesystem, called FSX, is under development to remove some limitations of FSFS. As of Version 1.9, it was not considered production-ready.[27]
Repository access
See main article: Comparison of Subversion clients. Access to Subversion repositories can take place by:
- Local filesystem or network filesystem,[28] accessed by client directly. This mode uses the access scheme.
- WebDAV/Delta-V (over http or https) using the module for Apache 2. This mode uses the
Notes and References
- Web site: 2020 . Subversion . 3 October 2023 . directory.fsf.org . . en-US.
- 2020-02-27 . The Apache Software Foundation Announces 20th Anniversary of Apache Subversion . 2023-01-29 . GlobeNewswire News Room . en.
- Web site: What is Subversion? > Subversion's History . Version Control with Subversion (for Subversion 1.7) . Collins-Sussman, Ben . Brian W. Fitzpatrick . C. Michael Pilato . 2011 . 15 March 2012.
- Web site: subversion 1.0 is released . Linux Weekly News . Benjamin Zeiss . 2004 . 30 March 2014.
- Web site: Subversion joins forces with Apache . Rubinstein, David . SD Times . 4 November 2009 . 15 March 2012 . https://web.archive.org/web/20091111000653/http://www.sdtimes.com/SUBVERSION_JOINS_FORCES_WITH_APACHE/By_David_Rubinstein/About_APACHE_and_SUBVERSION/33886 . 2009-11-11.
- Web site: Subversion is now Apache Subversion . https://web.archive.org/web/20110512171259/http://subversion.wandisco.com/component/content/article/1/43.html . 12 May 2011 . 18 February 2010 . 15 March 2012.
- Web site: Subversion 1.1 Release Notes . 2015-09-21.
- Web site: Subversion 1.2 Release Notes . 2015-09-21.
- Web site: Subversion 1.3 Release Notes . 2015-09-21.
- Web site: Subversion 1.4 Release Notes . 2015-09-21.
- Web site: Subversion 1.5 Release Notes . 2015-09-21.
- Web site: Apache Subversion 1.6 Release Notes . 2015-09-21.
- Web site: Apache Subversion 1.7 Release Notes . 2015-09-21.
- Web site: Apache Subversion 1.8 Release Notes . 2015-09-21.
- Web site: Apache Subversion 1.9 Release Notes . 2015-09-21.
- Web site: Apache Subversion 1.10 Release Notes . 2018-04-17.
- Web site: Apache Subversion 1.11 Release Notes . 2018-10-31.
- Web site: Apache Subversion 1.12 Release Notes . 2019-05-01.
- Web site: Apache Subversion 1.13 Release Notes.
- Web site: Apache Subversion 1.14 LTS Release Notes. 2020-06-02. subversion.apache.org.
- Web site: The Subversion Team . Apache Subversion News Archives . 2024-10-15 . subversion.apache.org . The Apache Software Foundation.
- Web site: Stefan . Sperling . 2024-10-08 . Release Announcement – [SECURITY][ANNOUNCE] Apache Subversion 1.14.4 released ]. User mailing list for Subversion . 2024-10-15 . lists.apache.org . The Apache Software Foundation.
- Web site: The Subversion Team . 2024-10-08 . Changelog for Version 1.14.4 and earlier . 2024-10-15 . Apache Subversion . The Apache Software Foundation.
- Web site: Apache Subversion's CHANGES file . 2018-10-31.
- Book: Ben Collins-Sussman . Brian W. Fitzpatrick . C. Michael Pilato . Version Control with Subversion: For Subversion 1.7 . 2011 . Chapter 5: Strategies for Repository Deployment . O'Reilly.
- Web site: Apache Subversion 1.8 Release Notes . Apache Project . 5 May 2020.
- Web site: Apache Subversion 1.9 Release Notes.
- [Berkeley DB]