Content deleted Content added
Xose.vazquez (talk | contribs) |
m →FSX: typography |
||
(21 intermediate revisions by 15 users not shown) | |||
Line 8:
| developer = [[Apache Software Foundation]]
| released = {{Start date and age|2000|10|20|df=yes}}
| latest release version = {{wikidata|property|preferred|references|edit|P348|P548=Q2804309}}
| latest release date = {{Start date and age|{{wikidata|qualifier|preferred|single|P348|P548=Q2804309|P577}}|df=yes}}
| ver layout = stacked
| programming language = [[C (programming language)|C]]
| operating system = {{hlist|[[
| genre = [[Revision control]]
| license = [[Apache License|Apache-2.0]]{{efn|Apache-2.0 since 2009-07-07.}}
}}
'''Apache Subversion''' (often abbreviated '''SVN''', after its command name ''svn'') is a [[
The [[Open-source software|open source]] community has used Subversion widely: for example, in projects such as [[Apache Software Foundation]], [[FreeBSD]], [[SourceForge]], and from 2006 to 2019, [[GNU Compiler Collection|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.<ref>{{Cite press release |date=2020-02-27 |title=The Apache Software Foundation Announces 20th Anniversary of Apache
==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 /> By 2001, Subversion had advanced sufficiently to [[Self-hosting (compilers)|host its own source code]],<ref name=bookhistory>{{cite web |url=
{| class="wikitable"
Line 29 ⟶ 31:
! Original release date
! Latest version
!
! Status
|-
Line 118 ⟶ 120:
|{{Version|c|1.14}}
|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<ref>{{Cite web |last=The Subversion Team |title=Apache Subversion News Archives |url=https://subversion.apache.org/news.html |access-date=2024-12-20 |website=subversion.apache.org |publisher=The Apache Software Foundation}}</ref><ref>{{Cite web |first=Daniel |last=Sahlberg |date=2024-12-08 |title=Release Announcement – [SECURITY][ANNOUNCE] Apache Subversion 1.14.5 released |series=User mailing list for Subversion |url=https://lists.apache.org/thread/jz1j48zrpryw8600n0x7kssvyq90y1fs |access-date=2024-12-08 |website=lists.apache.org |publisher=The Apache Software Foundation}}</ref><ref>{{Cite web |last=The Subversion Team |date=2024-10-08 |title=Changelog for Version 1.14.5 and earlier |url=https://svn.apache.org/repos/asf/subversion/tags/1.14.5/CHANGES |access-date=2024-12-20 |website=Apache Subversion |publisher=The Apache Software Foundation}}</ref>
|1.14.2▼
|
|Fully supported, [[Long-term support|LTS]]
|-
|
|20XX
|(Not yet released)
|In development
|-
| colspan="5" | <small>{{Version |l |show=111111}}</small>
|}
<!-- o=Old-Not-Supported; co=Old-Still-Supported; c=Latest-Stable; cp=Preview; p=Planned-Future -->
Line 153 ⟶ 161:
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=
</ref> The Berkeley DB backend was deprecated in version 1.8.<ref>{{cite web |url=
====FSFS====
Line 169 ⟶ 177:
====FSX====
A new filesystem, called FSX, is under development to remove some limitations of FSFS.
===Repository access===
Line 181 ⟶ 189:
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>[
==Layers==
Line 197 ⟶ 205:
==Filesystem==
[[File:Svn 3D-tree.svg|right|thumb]]
One can view the Subversion filesystem as "two-dimensional".<ref>[
* '''Path''' (regular [[Path (computing)|path]] of [[Unix-like]] OS filesystem)
* '''Revision'''
Line 215 ⟶ 223:
; {{mono|svn:needs-lock}} : Specifies that a file is to be checked out with file permissions set to read-only. This is designed for use with the locking mechanism. The read-only permission reminds one to obtain a lock before modifying the file: obtaining a lock makes the file writable, and releasing the lock makes it read-only again. Locks are only enforced during a commit operation. Locks can be used without setting this property. However, that is not recommended, because it introduces the risk of someone modifying a locked file; they will only discover it has been locked when their commit fails.
; {{mono|svn:special}} : This property is not meant to be set or modified directly by users. {{As of | 2010}} it is only used for having [[symbolic link]]s in the repository. When a symbolic link is added to the repository, a file containing the link target is created with this property set. When a Unix-like system checks out this file, the client converts it to a symbolic link.
; {{mono|svn:mergeinfo}} : Used to track merge data (revision numbers) in Subversion 1.5 (or later). This property is automatically maintained by the {{mono|merge}} command, and it is not recommended to change its value manually.<ref>[
Subversion also uses properties on revisions themselves. Like the above properties on filesystem entries, the names are completely arbitrary, with the Subversion client using certain properties prefixed with 'svn:'. However, these properties are not versioned, and they can be changed later if allowed by a pre-revprop-change hook.<ref>[
; {{mono|svn:date}} : The date and time stamp of a revision.
Line 224 ⟶ 232:
==Branching and tagging==
Subversion uses the inter-file branching model from [[Perforce]]<ref>[http://www.perforce.com/perforce/branch.html Inter-File Branching: A Practical Method for Representing Variants] {{webarchive|url=https://web.archive.org/web/20070714160428/http://www.perforce.com/perforce/branch.html |date=2007-07-14 }}</ref> to implement [[Branching (software)|branches]] and [[Revision tag|tagging]]. A branch is a separate line of development.<ref>[
A new branch or tag is set up by using the "{{mono|svn copy}}" command, which should be used in place of the native operating system mechanism. The copied directory is linked to the original in the repository to preserve its history, and the copy takes very little extra space in the repository.
Line 233 ⟶ 241:
==Limitations and problems==
A known problem in Subversion affects the implementation of the file and directory rename operation. {{As of|2014}}, Subversion implements the renaming of files and directories as a "copy" to the new name followed by a "delete" of the old name. Only the names change, all data relating to the edit history remains the same, and Subversion will still use the old name in older revisions of the "tree". However, Subversion may become confused when a move conflicts with edits made elsewhere,<ref>{{Cite web |url=http://subversion.tigris.org/issues/show_bug.cgi?id=898 |title=Implement true renames |access-date=2007-05-11 |archive-date=2002-12-01 |archive-url=https://web.archive.org/web/20021201064344/http://subversion.tigris.org/issues/show_bug.cgi?id=898 |url-status=dead }}</ref> both for regular commits and when merging branches.<ref>[
{{As of | 2013}}, Subversion lacks some repository-administration and management features. For instance, someone may wish to edit the repository to permanently remove all historical records of certain data. Subversion does not have built-in support to achieve this simply.<ref>{{Cite web |url=https://issues.apache.org/jira/browse/SVN-516 |title=[SVN-516] svn obliterate |access-date=2023-09-04 }}</ref>
Subversion stores additional copies of data on the local machine, which can become an issue with very large projects or files, or if developers work on multiple branches simultaneously. In versions prior to 1.7 these <code>.svn</code> directories on the client side could become corrupted by ill-advised user activity like global search/replace operations.<ref>{{Cite web|url=https://stackoverflow.com/a/579442|title=Subclipse - Repair SVN Checksum}}</ref> Starting with version 1.7 Subversion uses a single centralized {{mono|.svn}} folder per working area.<ref>[
Subversion does not store the modification times of files. As such, a file checked out of a Subversion repository will have the 'current' date (instead of the modification time in the repository), and a file checked into the repository will have the date of the check-in (instead of the modification time of the file being checked in). This might not always be what is wanted.<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 |access-date=2023-09-04 }}</ref>
To mitigate this, third-party tools exist that allow for preserving modification time and other filesystem meta-data.<ref>[
However, giving checked out files a current date is important as well — this is how tools like [[make (software)|make(1)]] will take notice of a changed file for rebuilding it.
Line 280 ⟶ 288:
| Tags, by their conventional definition, are both read-only and light-weight, on the repository and client. Subversion copies are not read-only, and while they are light-weight on the repository, they are incredibly heavy-weight on the client.}}
To address such issues, posters on the Subversion mailing lists have suggested a new feature called "labels" or "aliases".<ref>For example: {{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> SVN labels would more closely resemble the "tags" of other systems such as [[Concurrent Versions System|CVS]] or [[Git (software)|Git]]. The fact that Subversion has global revision numbers opens the way to a very simple label → revision implementation. Yet as of 2013, no progress has been made and symbolic tags are not in the list of the most wanted features.<ref>{{cite web |url=
==Development and implementation==
[[CollabNet]] has continued its involvement with Subversion, but the project runs as an independent open source community. In November 2009, the project was accepted into the
In October 2009, [[WANdisco]] announced the hiring of core Subversion committers as the company moved to become a major corporate sponsor of the project. This included Hyrum Wright, president of the Subversion Corporation and release manager for the Subversion project since early 2008, who joined the company to lead its open source team.<ref>{{Cite news |title= WANdisco Names Hyrum Wright to Lead Subversion Open Source Efforts |date= January 7, 2010 |work= News release |author= WANdisco |publisher= Open Source magazine |url= http://opensource.sys-con.com/node/1239202 |access-date= October 29, 2011 |archive-url=https://web.archive.org/web/20120118161238/http://opensource.sys-con.com/node/1239202 |archive-date=2012-01-18 |url-status=live}}</ref>
The Subversion open-source community does not provide binaries, but potential users can download binaries from volunteers.<ref>{{Cite web |title= Apache Subversion Binary Packages |work= Official project website |url=
Work announced in 2009 included SubversionJ (a [[Java API]]) and implementation of the Obliterate command, similar to that provided by [[Perforce]]. Both of these enhancements were sponsored by WANdisco.<ref>{{Cite news|title=WANdisco Presents New Initiatives for the Subversion Open Source Project |author=WANdisco |publisher=CM Crossroads |work=News release |date=October 28, 2009 |url=http://www.cmcrossroads.com/index.php?Itemid=100152&catid=101:news-and-announcements&id=13065:wandisco-presents-new-initiatives-for-the-subversion-open-source-project-&option=com_content&view=article |access-date=October 29, 2011 |archive-url=https://web.archive.org/web/20111118040455/http://www.cmcrossroads.com/index.php?Itemid=100152&catid=101%3Anews-and-announcements&id=13065%3Awandisco-presents-new-initiatives-for-the-subversion-open-source-project-&option=com_content&view=article |archive-date=2011-11-18 |url-status=dead }}</ref>
The Subversion committers normally have at least one or two new features under active development at any one time. The 1.7 release of Subversion in October 2011 included a streamlined HTTP transport to improve performance and a rewritten working-copy library.<ref>{{Cite web |title= Apache Subversion Roadmap |work= Official project website |url=
In 2002, [http://svn.apache.org/repos/asf/subversion/svn-logos/README.html a design contest] was held to select the logo for Subversion. The original entries can be found [http://svn.apache.org/repos/asf/subversion/svn-logos/entries.html here] as well as the [http://svn.apache.org/repos/asf/subversion/svn-logos/VOTES votes] for each logo. The current logo received the most votes in the contest.
Line 313 ⟶ 321:
===Sources===
{{refbegin}}
* C. Michael Pilato, Ben Collins-Sussman, Brian W. Fitzpatrick; ''Version Control with Subversion''; O'Reilly; {{ISBN|0-596-00448-6}} (1st edition, paperback, 2004, [
* Garrett Rooney; ''Practical Subversion''; Apress; {{ISBN|1-59059-290-5}} (1st edition, paperback, 2005)
* Mike Mason; ''Pragmatic Version Control Using Subversion''; Pragmatic Bookshelf; {{ISBN|0-9745140-6-3}} (1st edition, paperback, 2005)
Line 324 ⟶ 332:
==External links==
* {{Official website}}
{{Version control software}}
|