| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" |
| "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
| <html xmlns="http://www.w3.org/1999/xhtml"> |
| <head> |
| <style type="text/css"> /* <![CDATA[ */ |
| @import "branding/css/tigris.css"; |
| @import "branding/css/inst.css"; |
| /* ]]> */</style> |
| <link rel="stylesheet" type="text/css" media="print" |
| href="branding/css/print.css"/> |
| <script type="text/javascript" src="branding/scripts/tigris.js"></script> |
| <title>subversion.tigris.org</title> |
| <!-- Custom stylations to hide the obnoxious project info --> |
| <style type="text/css"> |
| #projecthome .axial { display: none; } |
| #apphead h1 { display: none; } |
| #longdescription { border: none; } |
| #longdescription h2 { display: none; } |
| #customcontent h2 { display: block; } |
| </style> |
| <!-- End custom stylations --> |
| </head> |
| |
| <body> |
| |
| <!-- The class h2 is included on the main div, because the HTML which the |
| server will wrap around the page includes a <div class="h2">. |
| Thus, we include one here so that the page looks right when previewed |
| locally, *but* we override the border which the CSS assigns to that |
| style, so that we do not get two borders on the live page. --> |
| <div class="h2 app" style="border-left: 0px" id="customcontent"> |
| |
| <div style="text-align: center;"> |
| <img src="./subversion_logo_hor-468x64.png" alt="Subversion" /> |
| </div> |
| |
| <p>The goal of the Subversion project is to build a <strong>version |
| control system</strong> that is a compelling replacement for CVS in |
| the open source community. The software is released under an <a |
| href="license-1.html">Apache/BSD-style</a> open source |
| license.</p> |
| |
| <h2>Latest Release</h2> |
| |
| <p>Subversion 1.4.2 is <a |
| href="http://subversion.tigris.org/servlets/NewsItemView?newsItemID=1755" |
| >now available</a>. Please see the <a |
| href="svn_1.4_releasenotes.html" >release notes</a> for what's new |
| in the 1.4 series.</p> |
| |
| <h2>Got Questions?</h2> |
| |
| <p style="background: #dd9;">The <a |
| href="http://svnbook.red-bean.com/">Subversion Book</a> and <a |
| href="faq.html">FAQ</a> can usually answer most questions. You can |
| also ask on the <a |
| href="/servlets/ProjectMailingListList">users@subversion.tigris.org</a> |
| mailing list, or in IRC at <tt><a href="irc://irc.freenode.net/" |
| >irc.freenode.net</a></tt>, channel <tt><a |
| href="irc://irc.freenode.net/svn" >#svn</a></tt>. (Note that the |
| mailing lists are <a href="faq.html#moderation">moderated</a>, so |
| there may be a delay before your post shows up.)</p> |
| |
| <h2>Subversion's Features</h2> |
| |
| <ul> <!-- list of features --> |
| |
| <li><strong>Most current CVS features.</strong> |
| <p>Subversion is meant to be a better CVS, so it has most of |
| CVS's features. Generally, Subversion's interface to a particular |
| feature is similar to CVS's, except where there's a compelling |
| reason to do otherwise.</p> |
| </li> |
| |
| <li><strong>Directories, renames, and file meta-data are versioned.</strong> |
| <p>Lack of these features is one of the most common complaints |
| against CVS. Subversion versions not only file contents and file |
| existence, but also directories, copies, and renames. It also |
| allows arbitrary metadata ("properties") to be versioned along |
| with any file or directory, and provides a mechanism for |
| versioning the `execute' permission flag on files. |
| </p> |
| </li> |
| |
| <li><strong>Commits are truly atomic.</strong> |
| <p>No part of a commit takes effect until the entire commit has |
| succeeded. Revision numbers are per-commit, not per-file; log |
| messages are attached to the revision, not stored redundantly as |
| in CVS.</p> |
| </li> |
| |
| <li><strong>Apache network server option, with WebDAV/DeltaV |
| protocol.</strong> |
| <p>Subversion can use the HTTP-based WebDAV/DeltaV protocol for network |
| communications, and the Apache web server to provide |
| repository-side network service. This gives Subversion an |
| advantage over CVS in interoperability, and provides various key |
| features for free: authentication, wire compression, and |
| basic repository browsing. </p> |
| </li> |
| |
| <li><strong>Standalone server option.</strong> |
| <p>Subversion also offers a standalone server option using a |
| custom protocol (not everyone wants to run Apache 2.x). The |
| standalone server can run as an inetd service, or in daemon mode, |
| and offers basic authentication and authorization. It can also be |
| tunnelled over ssh.</p> |
| </li> |
| |
| <li><strong>Branching and tagging are cheap (constant time) operations</strong> |
| <p>There is no reason for these operations to be expensive, so |
| they aren't.</p> |
| |
| <p>Branches and tags are both implemented in terms of an |
| underlying "copy" operation. A copy takes up a small, constant |
| amount of space. Any copy is a tag; and if you start committing |
| on a copy, then it's a branch as well. (This does away with CVS's |
| "branch-point tagging", by removing the distinction that made |
| branch-point tags necessary in the first place.)</p> |
| </li> |
| |
| <li><strong>Natively client/server, layered library design</strong> |
| <p> Subversion is designed to be client/server from the beginning; |
| thus avoiding some of the maintenance problems which have plagued |
| CVS. The code is structured as a set of modules with well-defined |
| interfaces, designed to be called by other applications.</p> |
| </li> |
| |
| <li><strong>Client/server protocol sends diffs in both directions</strong> |
| <p>The network protocol uses bandwidth efficiently by transmitting |
| diffs in both directions whenever possible (CVS sends diffs from |
| server to client, but not client to server).</p> |
| </li> |
| |
| <li><strong>Costs are proportional to change size, not data size</strong> |
| <p>In general, the time required for a Subversion operation is |
| proportional to the size of the <i>changes</i> resulting from that |
| operation, not to the absolute size of the project in which the |
| changes are taking place. This is a property of the Subversion |
| repository model.</p> |
| </li> |
| |
| |
| <li><strong>Choice of database or plain-file repository implementations</strong> |
| <p>Repositories can be created with either an embedded database |
| back-end (BerkeleyDB) or with normal flat-file back-end, which |
| uses a custom format.</p> |
| </li> |
| |
| <li><strong>Versioning of symbolic links</strong> |
| <p>Unix users can place symbolic links under version control. The |
| links are recreated in Unix working copies, but not in win32 |
| working copies.</p> |
| </li> |
| |
| <li><strong>Efficient handling of binary files</strong> |
| <p>Subversion is equally efficient on binary as on text files, |
| because it uses a binary diffing algorithm to transmit and store |
| successive revisions.</p> |
| </li> |
| |
| <li><strong>Parseable output</strong> |
| <p>All output of the Subversion command-line client is carefully |
| designed to be both human readable and automatically parseable; |
| scriptability is a high priority. |
| </p> |
| </li> |
| |
| <li><strong>Localized messages</strong> |
| <p>Subversion uses gettext() to display translated error, |
| informational, and help messages, based on current locale |
| settings.</p> |
| </li> |
| |
| </ul> |
| |
| <h2>Future Subversion Features</h2> |
| |
| <p>See the <a href="roadmap.html">Roadmap</a> page.</p> |
| |
| </div> |
| </body> |
| </html> |