<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<style type="text/css"> /* <![CDATA[ */
  @import "tigris-branding/css/tigris.css";
  @import "tigris-branding/css/inst.css";
  /* ]]> */</style>
<link rel="stylesheet" type="text/css" media="print"
  href="tigris-branding/css/print.css"/>
<script type="text/javascript" src="tigris-branding/scripts/tigris.js"></script>
<title>subversion.tigris.org</title>
</head>

<!-- 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. -->
<body>
<div class="h2 app" style="border-left: 0px">

<table border="0" cellpadding="2" cellspacing="2" width="98%"
  style="background-color: white">
<tr>
<td style="background-color: yellow">
<div style="color: red">

<p><b>NEWS: Subversion 1.2.1 is <a
href="http://subversion.tigris.org/servlets/NewsItemView?newsItemID=1202"
>now available</a>, please see the <a href="svn_1.2_releasenotes.html"
>release notes</a> for what's new in the 1.2 series.</b></p>

<p><b>RESOURCES: 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>.</b></p>

</div>
</td>
</tr>

</table>

<h3>What Is Subversion?</h3>

<table border="0" cellpadding="2" cellspacing="2" width="98%"
  style="background-color: white">
<tr>
<td style="background-color: #f0f0f0">

<p>
The goal of the Subversion project is to build a version control
system that is a compelling replacement for CVS in the open source
community.  The software is released under an <a
href="project_license.html">Apache/BSD-style</a> open source license.
</p>

<p style="text-align: center">
<img src="subversion_logo_hor-468x64.png" alt="Subversion"
     width="468" height="64"/>
</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, path-based authorization, 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>

</td></tr>
</table>

</div>
</body>
</html>
