Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Apache Subversion
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Features== * [[Commit (data management)|Commits]] as true [[Atomicity (database systems)|atomic operations]] (interrupted commit operations in CVS would cause repository inconsistency or corruption). * The system maintains [[Software versioning|versioning]] for directories and some specific file [[metadata]] (see [[#Properties|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 link]]s. * Native support for binary files, with space-efficient binary-diff storage. * [[Apache HTTP Server]] as network server, [[WebDAV]]/[[WebDAV#Extensions and derivatives|Delta-V]] for [[Protocol (computing)|protocol]]. There is also an independent server [[process (computing)|process]] called svnserve that uses a custom protocol over [[Internet Protocol Suite|TCP/IP]]. * [[Branching (version control)|Branching]] is implemented by a copy of a directory, thus it is a cheap operation, independent of file size. * Natively [[client–server model|client–server]], [[Abstraction layer|layered]] [[Library (computing)|library]] design. * Client/server protocol sends [[diff]]s in both directions. * [[Parsing|Parsable]] output, including [[XML]] log output. * [[Open source license]]d – [[Apache License]] since the 1.7 release; prior versions use a derivative of the Apache Software License 1.1. * [[Internationalization and localization|Internationalized]] program messages. * [[File locking]] for unmergeable files ("reserved checkouts"). * Path-based authorization. * [[Language binding]]s for [[C Sharp (programming language)|C#]], [[PHP]], [[Python (programming language)|Python]], [[Perl]], [[Ruby (programming language)|Ruby]], and [[Java (programming language)|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).<ref name="backend"> {{cite book |author1=Ben Collins-Sussman |author2=Brian W. Fitzpatrick |author3=C. Michael Pilato |title= Version Control with Subversion: For Subversion 1.7 |year= 2011 |chapter= Chapter 5: Strategies for Repository Deployment |url= https://svnbook.red-bean.com/en/1.7/svn.reposadmin.planning.html#svn.reposadmin.basics.backends | publisher = O'Reilly}} </ref> The Berkeley DB backend was deprecated in version 1.8.<ref>{{cite web |url=https://subversion.apache.org/docs/release-notes/1.8.html#bdb-deprecated |title=Apache Subversion 1.8 Release Notes |publisher=Apache Project |access-date=5 May 2020}}</ref> ====FSFS==== {{Redirect|FSFS|the Freesat service from Sky|Freesat from Sky|the book by Richard Stallman|Free Software, Free Society}} 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.<ref name="backend"/> 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.<ref>{{Cite web|url=https://subversion.apache.org/docs/release-notes/1.9.html#fsx|title = Apache Subversion 1.9 Release Notes}}</ref> ===Repository access=== {{Main| Comparison of Subversion clients}} Access to Subversion repositories can take place by: # Local filesystem or network filesystem,<ref>[[Berkeley DB]] relies on file locking and thus should not be used on (network) filesystems which do not implement them</ref> accessed by client directly. This mode uses the {{mono|file:///path}} access scheme. # [[WebDAV]]/Delta-V (over http or https) using the {{mono|mod_dav_svn}} module for [[Apache HTTP Server|Apache 2]]. This mode uses the {{mono|<nowiki>http://host/path</nowiki>}} access scheme or {{mono|<nowiki>https://host/path</nowiki>}} for secure connections using ssl. # Custom "svn" protocol (default [[List of TCP and UDP port numbers|port]] 3690), using plain text or over [[TCP/IP]]. This mode uses either the {{mono|<nowiki>svn://host/path</nowiki>}} access scheme for unencrypted transport or {{mono|<nowiki>svn+ssh://host/path</nowiki>}} scheme for tunneling over ssh. All three means can access both FSFS and Berkeley DB repositories. Any 1.x version of a client can work with any 1.x server. Newer clients and servers have additional features and performance capabilities, but have fallback support for older clients/servers.<ref>[https://subversion.apache.org/docs/release-notes/1.5.html SVN 1.5 release notes]</ref>
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)