Content deleted Content added
The article is now current as of May 2025, properly formatted for MediaWiki, and provides a comprehensive yet concise overview of Apache Subversion suitable for Wikipedia. Tag: Reverted |
I have added proper citations throughout the article following Wikipedia's citation guidelines. Tag: Reverted |
||
Line 14:
| genre = [[Revision control]]
| license = [[Apache License|Apache-2.0]]<ref group="note">Apache-2.0 since 2009-07-07.</ref>
| website = {{URL|https://subversion.apache.org/}}
}}
'''Apache Subversion''' (often abbreviated '''SVN''', after its command name ''svn'') is a [[free and open-source software|free and open-source]] [[version control]] system distributed under the [[Apache License]].<ref>{{cite web |year=2020 |title=Subversion |url=https://directory.fsf.org/wiki/Subversion#tab=Details |access-date=3 October 2023 |website=directory.fsf.org |publisher=[[Free Software Directory]] |language=en-US}}</ref> 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).<ref name=bookhistory>{{cite web |url=https://svnbook.red-bean.com/en/1.7/svn.intro.whatis.html#svn.intro.history |work=Version Control with Subversion (for Subversion 1.7) |title=What is Subversion? > Subversion's History |author1=Collins-Sussman, Ben |author2=Brian W. Fitzpatrick |author3=C. Michael Pilato |year=2011 |access-date=15 March 2012}}</ref>
The [[open source]] community has used Subversion widely in projects such as [[Apache Software Foundation]], [[FreeBSD]], [[SourceForge]], and from 2006 to 2019, [[GNU Compiler Collection|GCC]].<ref>{{cite web |url=https://gcc.gnu.org/wiki/SvnConversion |title=GCC SVN to Git Conversion |publisher=GCC Wiki |access-date=2025-05-28}}</ref> [[CodePlex]] was previously a common host for Subversion repositories.<ref>{{cite web |url=https://devblogs.microsoft.com/bharry/a-new-home-for-codeplex-2/ |title=A new home for CodePlex |author=Brian Harry |date=2017-03-31 |publisher=Microsoft |access-date=2025-05-28}}</ref>
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.<ref>{{Cite press release |date=2020-02-27 |title=The Apache Software Foundation Announces 20th Anniversary of Apache Subversion |url=https://www.globenewswire.com/news-release/2020/02/27/1991695/17401/en/The-Apache-Software-Foundation-Announces-20th-Anniversary-of-Apache-Subversion.html |access-date=2023-01-29 |website=GlobeNewswire News Room |language=en}}</ref>
==History==
[[CollabNet]] founded the Subversion project in 2000 as an effort to write an open-source version-control system which operated much like [[Concurrent Versions System|CVS]] but which fixed the bugs and supplied some features missing in CVS.<ref name=bookhistory
In November 2009, Subversion was accepted into Apache Incubator: this marked the beginning of the process to become a standard top-level Apache project.<ref name=SDT2011>{{cite web |url=http://www.sdtimes.com/link/33886 |title=Subversion joins forces with Apache |author=Rubinstein, David |publisher=SD Times |date=4 November 2009 |access-date=15 March 2012 |archive-url=https://web.archive.org/web/20091111000653/http://www.sdtimes.com/SUBVERSION_JOINS_FORCES_WITH_APACHE/By_David_Rubinstein/About_APACHE_and_SUBVERSION/33886 |archive-date=2009-11-11}}</ref> It became a top-level Apache project on February 17, 2010.<ref>{{cite web |url=http://subversion.wandisco.com/component/content/article/1/43.html |archive-url=https://web.archive.org/web/20110512171259/http://subversion.wandisco.com/component/content/article/1/43.html |archive-date=12 May 2011 |title=Subversion is now Apache Subversion |date=18 February 2010 |access-date=15 March 2012}}</ref>
Line 29 ⟶ 30:
===Version history===
{| class="wikitable"
|+ Major Subversion releases<ref>{{cite web |url=https://subversion.apache.org/docs/release-notes/release-history.html |title=Subversion Release History |publisher=Apache Software Foundation |access-date=2025-05-28}}</ref>
|-
! Version
Line 38 ⟶ 39:
|-
| 1.0
| 2004-02-23<ref>{{cite web |url=https://svn.apache.org/repos/asf/subversion/tags/1.0.0/CHANGES |title=Subversion 1.0.0 CHANGES |publisher=Apache Software Foundation |access-date=2025-05-28}}</ref>
| 1.0.9 (2004-10-13)
| {{no|End of Life}}
Line 44 ⟶ 45:
|-
| 1.1
| 2004-09-29<ref>{{cite web |url=https://subversion.apache.org/docs/release-notes/1.1.html |title=Subversion 1.1 Release Notes |publisher=Apache Software Foundation |access-date=2015-09-21}}</ref>
| 1.1.4 (2005-04-01)
| {{no|End of Life}}
Line 50 ⟶ 51:
|-
| 1.2
| 2005-05-21<ref>{{cite web |url=https://subversion.apache.org/docs/release-notes/1.2.html |title=Subversion 1.2 Release Notes |publisher=Apache Software Foundation |access-date=2015-09-21}}</ref>
| 1.2.3 (2005-08-19)
| {{no|End of Life}}
Line 56 ⟶ 57:
|-
| 1.3
| 2005-12-30<ref>{{cite web |url=https://subversion.apache.org/docs/release-notes/1.3.html |title=Subversion 1.3 Release Notes |publisher=Apache Software Foundation |access-date=2015-09-21}}</ref>
| 1.3.2 (2006-05-23)
| {{no|End of Life}}
Line 62 ⟶ 63:
|-
| 1.4
| 2006-09-10<ref>{{cite web |url=https://subversion.apache.org/docs/release-notes/1.4.html |title=Subversion 1.4 Release Notes |publisher=Apache Software Foundation |access-date=2015-09-21}}</ref>
| 1.4.6 (2007-12-21)
| {{no|End of Life}}
Line 68 ⟶ 69:
|-
| 1.5
| 2008-06-19<ref>{{cite web |url=https://subversion.apache.org/docs/release-notes/1.5.html |title=Subversion 1.5 Release Notes |publisher=Apache Software Foundation |access-date=2015-09-21}}</ref>
| 1.5.9 (2010-12-06)
| {{no|End of Life}}
Line 74 ⟶ 75:
|-
| 1.6
| 2009-03-20<ref>{{cite web |url=https://subversion.apache.org/docs/release-notes/1.6.html |title=Apache Subversion 1.6 Release Notes |publisher=Apache Software Foundation |access-date=2015-09-21}}</ref>
| 1.6.23 (2013-05-30)
| {{no|End of Life}}
Line 80 ⟶ 81:
|-
| 1.7
| 2011-10-11<ref>{{cite web |url=https://subversion.apache.org/docs/release-notes/1.7.html |title=Apache Subversion 1.7 Release Notes |publisher=Apache Software Foundation |access-date=2015-09-21}}</ref>
| 1.7.22 (2015-08-12)
| {{no|End of Life}}
Line 86 ⟶ 87:
|-
| 1.8
| 2013-06-18<ref>{{cite web |url=https://subversion.apache.org/docs/release-notes/1.8.html |title=Apache Subversion 1.8 Release Notes |publisher=Apache Software Foundation |access-date=2015-09-21}}</ref>
| 1.8.19 (2017-08-10)
| {{no|End of Life}}
Line 92 ⟶ 93:
|-
| 1.9
| 2015-08-05<ref>{{cite web |url=https://subversion.apache.org/docs/release-notes/1.9.html |title=Apache Subversion 1.9 Release Notes |publisher=Apache Software Foundation |access-date=2015-09-21}}</ref>
| 1.9.12 (2019-07-24)
| {{no|End of Life}}
Line 98 ⟶ 99:
|-
| 1.10 LTS
| 2018-04-13<ref>{{cite web |url=https://subversion.apache.org/docs/release-notes/1.10.html |title=Apache Subversion 1.10 Release Notes |publisher=Apache Software Foundation |access-date=2018-04-17}}</ref>
| 1.10.8 (2022-04-12)
| {{no|End of Life}}<ref>{{cite web |url=https://subversion.apache.org/news.html |title=Subversion 1.10.x line is end of life (EOL) |publisher=Apache Software Foundation |date=2022-04-12 |access-date=2025-05-28}}</ref>
| Previous LTS release
|-
| 1.11
| 2018-10-30<ref>{{cite web |url=https://subversion.apache.org/docs/release-notes/1.11.html |title=Apache Subversion 1.11 Release Notes |publisher=Apache Software Foundation |access-date=2018-10-31}}</ref>
| 1.11.1 (2019-01-11)
| {{no|End of Life}}
Line 110 ⟶ 111:
|-
| 1.12
| 2019-04-24<ref>{{cite web |url=https://subversion.apache.org/docs/release-notes/1.12.html |title=Apache Subversion 1.12 Release Notes |publisher=Apache Software Foundation |access-date=2019-05-01}}</ref>
| 1.12.2 (2019-07-24)
| {{no|End of Life}}
Line 116 ⟶ 117:
|-
| 1.13
| 2019-10-30<ref>{{cite web|title=Apache Subversion 1.13 Release Notes|url=https://subversion.apache.org/docs/release-notes/1.13.html |publisher=Apache Software Foundation |access-date=2025-05-28}}</ref>
| 1.13.0 (2019-10-30)
| {{no|End of Life}}
Line 122 ⟶ 123:
|-
| '''1.14 LTS'''
| '''2020-05-27'''<ref>{{Cite web|title=Apache Subversion 1.14 LTS Release Notes|url=https://subversion.apache.org/docs/release-notes/1.14.html|access-date=2020-06-02|website=subversion.apache.org}}</ref>
| '''1.14.5 (2024-12-08)'''<ref>{{cite web |url=https://
| {{yes|Currently Supported}}
| Current LTS release
Line 135 ⟶ 136:
===Release support policy===
Subversion follows a support policy where:<ref>{{cite web |url=https://subversion.apache.org/docs/community-guide/releasing.html#release-planning |title=How We Plan Releases |publisher=Apache Software Foundation |access-date=2025-05-28}}</ref><ref>{{cite web |url=https://endoflife.date/apache-subversion |title=Apache Subversion
* '''Regular releases''' are supported for six months from initial release
* '''LTS releases''' are supported for four years from initial release and until three months after the next LTS release
Line 142 ⟶ 143:
==Features==
===Core features===
* '''[[Atomicity (database systems)|Atomic commits]]''': Unlike CVS, interrupted commit operations do not cause repository inconsistency or corruption<ref name="svnbook-basic">{{cite book |author1=Ben Collins-Sussman |author2=Brian W. Fitzpatrick |author3=C. Michael Pilato |title=Version Control with Subversion |publisher=O'Reilly |year=2011 |chapter=Fundamental Concepts |url=https://svnbook.red-bean.com/en/1.7/svn.basic.html}}</ref>
* '''Directory versioning''': The system maintains versioning for directories and file [[metadata]]<ref name="svnbook-basic"/>
* '''Efficient branching''': [[Branching (version control)|Branching]] is implemented as a cheap copy operation (O(1)), independent of file size<ref>{{cite web |url=https://svnbook.red-bean.com/en/1.7/svn.branchmerge.html |title=Branching and Merging |work=Version Control with Subversion |access-date=2025-05-28}}</ref>
* '''Binary file support''': Native support with space-efficient binary-diff storage<ref>{{cite web |url=https://subversion.apache.org/faq.html#binary-files |title=Subversion FAQ: How does Subversion handle binary files? |publisher=Apache Software Foundation |access-date=2025-05-28}}</ref>
* '''[[Symbolic link]] versioning''': Full versioning support for symbolic links<ref name="svn-special">{{cite web |url=https://svnbook.red-bean.com/en/1.7/svn.advanced.props.special.html |title=Special Properties |work=Version Control with Subversion |access-date=2025-05-28}}</ref>
* '''Multiple network protocols''': Supports HTTP/HTTPS via [[WebDAV]], custom SVN protocol, and local file access<ref name="svn-serverconfig">{{cite web |url=https://svnbook.red-bean.com/en/1.7/svn.serverconfig.html |title=Server Configuration |work=Version Control with Subversion |access-date=2025-05-28}}</ref>
===Advanced features===
* '''Merge tracking''': Automatic tracking of merges between branches (since version 1.5)<ref>{{cite web |url=https://subversion.apache.org/docs/release-notes/1.5.html#merge-tracking |title=Merge Tracking (foundational) |work=Subversion 1.5 Release Notes |publisher=Apache Software Foundation |access-date=2025-05-28}}</ref>
* '''[[File locking]]''': Support for unmergeable files through "reserved checkouts"<ref>{{cite web |url=https://svnbook.red-bean.com/en/1.7/svn.advanced.locking.html |title=Locking |work=Version Control with Subversion |access-date=2025-05-28}}</ref>
* '''Path-based authorization''': Fine-grained access control at the directory and file level<ref>{{cite web |url=https://svnbook.red-bean.com/en/1.7/svn.serverconfig.pathbasedauthz.html |title=Path-Based Authorization |work=Version Control with Subversion |access-date=2025-05-28}}</ref>
* '''Properties system''': Versioned metadata stored as name=value pairs<ref name="svn-props">{{cite web |url=https://svnbook.red-bean.com/en/1.7/svn.advanced.props.html |title=Properties |work=Version Control with Subversion |access-date=2025-05-28}}</ref>
* '''[[Language binding]]s''': APIs available for [[C Sharp (programming language)|C#]], [[PHP]], [[Python (programming language)|Python]], [[Perl]], [[Ruby (programming language)|Ruby]], and [[Java (programming language)|Java]]<ref>{{cite web |url=https://subversion.apache.org/docs/#api |title=API Documentation |publisher=Apache Software Foundation |access-date=2025-05-28}}</ref>
* '''[[Internationalization and localization|Internationalization]]''': Fully internationalized program messages<ref>{{cite web |url=https://subversion.apache.org/faq.html#l10n |title=Subversion FAQ: Localization/Internationalization |publisher=Apache Software Foundation |access-date=2025-05-28}}</ref>
* '''Shelving (experimental)''': Temporarily set aside changes without committing (since 1.10)<ref>{{cite web |url=https://subversion.apache.org/docs/release-notes/1.10.html#shelving |title=Shelving (experimental) |work=Subversion 1.10 Release Notes |publisher=Apache Software Foundation |access-date=2025-05-28}}</ref>
* '''Changelists''': Organize working copy changes into logical groups<ref>{{cite web |url=https://svnbook.red-bean.com/en/1.7/svn.advanced.changelists.html |title=Changelists |work=Version Control with Subversion |access-date=2025-05-28}}</ref>
==Architecture==
[[File:Svn 3D-tree.svg|right|thumb|300px|Subversion's two-dimensional filesystem model]]
Subversion uses a [[Abstraction layer|layered]] [[Library (computing)|library]] design with clear separation of concerns:<ref name="svnbook-developer">{{cite web |url=https://svnbook.red-bean.com/en/1.7/svn.developer.html |title=Embedding Subversion |work=Version Control with Subversion |access-date=2025-05-28}}</ref>
; Fs (Filesystem)
Line 175 ⟶ 176:
: The highest level; manages local working copies and provides client operations
The Subversion filesystem can be viewed as "two-dimensional", with coordinates of:<ref>{{cite web |url=https://svnbook.red-bean.com/nightly/en/svn.branchmerge.basicmerging.html#svn.branchmerge.basicmerging.resurrect |title=Basic Merging |work=Version Control with Subversion |access-date=2025-05-28}}</ref>
* '''Path''': Regular [[Path (computing)|filesystem path]]
* '''Revision''': A specific point in the repository's history
Line 181 ⟶ 182:
==Repository storage==
===FSFS (default)===
In 2004, a new storage subsystem called FSFS (FileSystem atop the FileSystem) was developed.<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> It became the default data store for new repositories starting with Subversion 1.2.<ref>{{cite web |url=https://subversion.apache.org/docs/release-notes/1.2.html#fsfs-default |title=FSFS is now the default repository backend |work=Subversion 1.2 Release Notes |publisher=Apache Software Foundation |access-date=2025-05-28}}</ref> FSFS stores its contents directly within the operating system's filesystem and offers several advantages:
* Better performance with directories containing many files
* More efficient disk usage due to less logging<ref name="backend"/>
* No risk of repository corruption from interrupted operations
===Berkeley DB (deprecated)===
The original development of Subversion used the [[Berkeley DB]] package.<ref name="backend"/> This backend had limitations when programs accessing the database crashed or terminated forcibly. While no data loss occurred, the repository would remain offline during journal replay and lock cleanup. The safest way to use Subversion with a Berkeley DB repository involved a single server-process running as one user.<ref name="backend"/> 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=Berkeley DB backend deprecation |work=Apache Subversion 1.8 Release Notes |publisher=Apache
===FSX (experimental)===
A new filesystem called FSX is under development to address 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
==Repository access==
{{Main|Comparison of Subversion clients}}
Subversion repositories can be accessed through three methods:<ref name="svn-serverconfig"/>
# '''Local filesystem''': Using the {{mono|file:///path}} access scheme<ref group="note">[[Berkeley DB]] relies on file locking and thus should not be used on (network) filesystems which do not implement them</ref>
# '''[[WebDAV]]/Delta-V''': Over HTTP or HTTPS using the {{mono|mod_dav_svn}} module for [[Apache HTTP Server|Apache 2]]
#* {{mono|<nowiki>http://host/path</nowiki>}} for standard access
Line 204 ⟶ 205:
#* {{mono|<nowiki>svn+ssh://host/path</nowiki>}} for SSH tunneling
All three methods can access both FSFS and Berkeley DB repositories. Any 1.x version of a client can work with any 1.x server, with newer versions providing additional features while maintaining backward compatibility.<ref>
==Properties==
Subversion's properties system provides versioned metadata as simple ''name''=''value'' pairs of text. Properties can be set on files, directories, or revisions.<ref name="svn-props"/>
===File and directory properties===
; {{mono|svn:executable}}
: Makes a file executable on [[Unix]]-like systems<ref name="svn-special"/>
; {{mono|svn:mime-type}}
: Stores the [[Internet media type]] of a file, affecting diff and merge operations<ref>{{cite web |url=https://svnbook.red-bean.com/en/1.7/svn.advanced.props.file-portability.html#svn.advanced.props.special.mime-type |title=File Content Type |work=Version Control with Subversion |access-date=2025-05-28}}</ref>
; {{mono|svn:ignore}}
: Lists filename patterns to ignore in a directory (similar to CVS's {{code|.cvsignore}})<ref>{{cite web |url=https://svnbook.red-bean.com/en/1.7/svn.advanced.props.special.ignore.html |title=Ignoring Unversioned Items |work=Version Control with Subversion |access-date=2025-05-28}}</ref>
; {{mono|svn:keywords}}
: Enables keyword substitution ({{mono|$Author$}}, {{mono|$Date$}}, {{mono|$Revision$}}, etc.)<ref>{{cite web |url=https://svnbook.red-bean.com/en/1.7/svn.advanced.props.special.keywords.html |title=Keyword Substitution |work=Version Control with Subversion |access-date=2025-05-28}}</ref>
; {{mono|svn:eol-style}}
: Controls [[Newline|end-of-line]] character conversion (native, CRLF, LF, CR)<ref>{{cite web |url=https://svnbook.red-bean.com/en/1.7/svn.advanced.props.file-portability.html#svn.advanced.props.special.eol-style |title=End-of-Line Character Sequences |work=Version Control with Subversion |access-date=2025-05-28}}</ref>
; {{mono|svn:externals}}
: Defines external repository dependencies<ref>{{cite web |url=https://svnbook.red-bean.com/en/1.7/svn.advanced.externals.html |title=Externals Definitions |work=Version Control with Subversion |access-date=2025-05-28}}</ref>
; {{mono|svn:needs-lock}}
: Indicates files that should be locked before editing<ref>{{cite web |url=https://svnbook.red-bean.com/en/1.7/svn.advanced.locking.html#svn.advanced.locking.lock-communication |title=Lock Communication |work=Version Control with Subversion |access-date=2025-05-28}}</ref>
; {{mono|svn:special}}
: Used internally for [[symbolic link]]s (not meant for direct user modification)<ref name="svn-special"/>
; {{mono|svn:mergeinfo}}
: Tracks merge history (automatically maintained since version 1.5)<ref>
===Revision properties===
Unlike file properties, revision properties are not versioned and can be modified after commit (if allowed by repository hooks):<ref>
; {{mono|svn:date}}
Line 242 ⟶ 243:
[[File:Subversion project visualization.svg|thumb|400px|Visualization of a Subversion project showing trunk, branches, and tags]]
Subversion uses the inter-file branching model from [[Perforce]]<ref>
A typical repository layout follows this convention:<ref>{{cite web |url=https://svnbook.red-bean.com/en/1.7/svn.branchmerge.maint.html#svn.branchmerge.maint.layout |title=Repository Layout |work=Version Control with Subversion |access-date=2025-05-28}}</ref>
<pre>
/project
Line 256 ⟶ 257:
==Security==
===Recent security fixes===
The latest release (1.14.5) includes a fix for CVE-2024-46901, addressing a denial-of-service vulnerability in mod_dav_svn via control characters in paths.<ref>{{cite web |url=https://subversion.apache.org/security/CVE-2024-46901-advisory.txt |title=Apache Subversion CVE-2024-46901 Advisory |publisher=Apache Software Foundation |date=2024-12-08 |access-date=2025-05-28}}</ref><ref>{{cite web |url=https://nvd.nist.gov/vuln/detail/CVE-2024-46901 |title=CVE-2024-46901 Detail |publisher=[[National Vulnerability Database]] |access-date=2025-05-28}}</ref>
Previous security fixes in the 1.14.x series include:
* CVE-2024-45720 (fixed in 1.14.4)<ref>{{cite web |url=https://nvd.nist.gov/vuln/detail/CVE-2024-45720 |title=CVE-2024-45720 Detail |publisher=[[National Vulnerability Database]] |access-date=2025-05-28}}</ref>
* CVE-2021-28544 and CVE-2022-24070 (fixed in 1.14.2)<ref>{{cite web |url=https://subversion.apache.org/security/CVE-2021-28544-advisory.txt |title=Apache Subversion CVE-2021-28544 Advisory |publisher=Apache Software Foundation |access-date=2025-05-28}}</ref><ref>{{cite web |url=https://subversion.apache.org/security/CVE-2022-24070-advisory.txt |title=Apache Subversion CVE-2022-24070 Advisory |publisher=Apache Software Foundation |access-date=2025-05-28}}</ref>
* CVE-2020-17525 (fixed in 1.14.1)<ref>{{cite web |url=https://nvd.nist.gov/vuln/detail/CVE-2020-17525 |title=CVE-2020-17525 Detail |publisher=[[National Vulnerability Database]] |access-date=2025-05-28}}</ref>
These security issues primarily affect Subversion servers (mod_dav_svn and svnserve) rather than clients.<ref>{{cite web |url=https://subversion.apache.org/security/ |title=Apache Subversion Security |publisher=Apache Software Foundation |access-date=2025-05-28}}</ref>
==Limitations==
===Technical limitations===
* '''Rename operations''': Implemented as copy+delete rather than true renames, which can cause merge conflicts<ref>{{Cite web |url=https://issues.apache.org/jira/browse/SVN-
* '''No obliterate feature''': Cannot permanently remove data from repository history<ref>{{Cite web |url=https://issues.apache.org/jira/browse/SVN-516 |title=[SVN-516] svn obliterate |publisher=Apache Software Foundation |access-date=2023-09-04}}</ref>
* '''Working copy overhead''': Stores pristine copies of all files locally (addressed in version 1.7 with centralized metadata)<ref>
* '''No modification times''': Files receive current timestamp on checkout<ref>{{Cite web |url=https://issues.apache.org/jira/browse/SVN-1256 |title=[SVN-1256] Ability to preserve last modification time (mtime) of files under version control |publisher=Apache Software Foundation |access-date=2023-09-04}}</ref>
* '''Centralized model''': Requires repository access for most operations<ref name="centralized-model">{{cite conference |url=https://www.youtube.com/watch?v=4XpnKHJAok8 |title=Tech Talk: Linus Torvalds on git |author=Linus Torvalds |date=2007-05-03 |publisher=Google |conference=Google Tech Talks |access-date=2025-05-28}}</ref>
===Platform-specific issues===
* '''[[HFS+]] (macOS)''': Problems with [[Unicode equivalence#Normalization|Unicode filename normalization]]<ref>{{Cite web |url=https://issues.apache.org/jira/browse/SVN-2464 |title=[SVN-2464] Canonicalize / stringprep UTF-8 filenames to handle composed / decomposed differences shown by e.g. Mac OS X HFS+ |publisher=Apache Software Foundation |access-date=2023-09-04}}</ref>
* '''Network filesystems''': Berkeley DB backend incompatible with filesystems lacking proper file locking<ref name="backend"/>
===Design decisions===
The centralized model has been both praised and criticized. [[Ben Collins-Sussman]], one of Subversion's designers, argued it helps prevent "insecure programmers" from hiding their work.<ref>
Subversion tags are implemented as directory copies rather than lightweight references, which differs from other version control systems and has been a source of ongoing discussion in the community.<ref>{{cite mailing list |url=https://svn.haxx.se/dev/archive-2005-05/1095.shtml |title=Subversion 'labels' vs. 'tags' |date=23 May 2005 |access-date=5 May 2020 |mailing-list=SVN Dev |last=Weintraub |first=David}}</ref><ref>{{cite web |url=https://subversion.apache.org/roadmap.html |title=Apache Subversion Roadmap |publisher=Apache Software Foundation |access-date=5 May 2020}}</ref>
==Development==
===Project governance===
Subversion is maintained by the [[Apache Software Foundation]] as a top-level project.<ref>{{cite web |url=https://apache.org/foundation/press/pr_2010_03_01.html |title=The Apache Software Foundation Announces Apache Subversion as a Top-Level Project |date=2010-03-01 |publisher=Apache Software Foundation |access-date=2025-05-28}}</ref> The development community includes:
* Core committers from various organizations<ref>{{cite web |url=https://subversion.apache.org/docs/community-guide/roles.html#committers |title=Committer Access |work=Subversion Community Guide |publisher=Apache Software Foundation |access-date=2025-05-28}}</ref>
* Corporate sponsors including [[CollabNet]] and [[WANdisco]] (now Cirata)<ref>{{cite web |url=https://blog.cirata.com/wandisco-is-now-cirata |title=WANdisco is now Cirata |date=2023-11-13 |publisher=Cirata |access-date=2025-05-28}}</ref>
* Open source contributors worldwide
Line 292 ⟶ 293:
===Integration and tools===
The Subversion project does not provide an official [[graphical user interface|GUI]], but numerous third-party tools are available:<ref>{{Cite web |title=Apache Subversion Binary Packages |work=Official project website |url=https://subversion.apache.org/packages.html |publisher=Apache Software Foundation |access-date=October 29, 2011}}</ref>
* [[TortoiseSVN]] (Windows Explorer integration)<ref>{{cite web |url=https://tortoisesvn.net/ |title=TortoiseSVN |access-date=2025-05-28}}</ref>
* IDE integrations ([[Eclipse (software)|Eclipse]], [[NetBeans]], [[IntelliJ IDEA]], [[Visual Studio]])<ref>{{cite web |url=https://subversion.apache.org/links.html#clients |title=Subversion Links: Clients |publisher=Apache Software Foundation |access-date=2025-05-28}}</ref>
* [[SVNKit]] (pure Java implementation)<ref>{{cite web |url=https://svnkit.com/ |title=SVNKit |access-date=2025-05-28}}</ref>
* Command-line clients for all major platforms
Line 336 ⟶ 337:
{{Authority control}}
{{DEFAULTSORT:Subversion}}
[[Category:Apache Software Foundation projects]]
[[Category:Collaborative software]]
|