| <TABLE BORDER="0" CELLPADDING="2" WIDTH="98%" BGCOLOR="white"> |
| <TR> |
| <TD WIDTH="100%" BGCOLOR="yellow"> |
| <font color="red"> |
| <b> |
| Please read <a href="/getting_subversion.html">Getting Subversion</a> |
| if you want to install Subversion. We recommend you join the <a |
| href="/servlets/ProjectMailingListList">users@subversion.tigris.org</a> |
| mailing list, and read the <a |
| href="http://svnbook.red-bean.com/">Subversion Book</a> and <a |
| href="/project_faq.html">FAQ</a>. You can also ask questions on IRC |
| at <b><tt>irc.freenode.net</tt></b>, channel <b><tt>#svn</tt></b>. To |
| find out how other people are using Subversion, see our list of <a |
| href="svn-repositories.html">Subversion Repositories On The Net</a>, and |
| the list of <a href="/project_links.html">related tools, |
| converters and clients</a>. |
| </b> |
| </font> |
| </TD> |
| </TR> |
| |
| </table> |
| |
| <h3>What Is Subversion?</h3> |
| |
| <table BORDER="0" CELLPADDING="2" WIDTH="98%" BGCOLOR="white"> |
| <TR> |
| <TD WIDTH="100%" HEIGHT="100" BGCOLOR="#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="/license-1.html">Apache/BSD-style</a> open source license. |
| See the <a href="/project_status.html">status page</a> for current |
| progress. |
| </p> |
| |
| <p> |
| <center> |
| <img src="/subversion_logo_hor-468x64.png" alt="Subversion" |
| width="468" height="64" align="center"/> |
| </center> |
| </p> |
| |
| <p> |
| <h2>Features of Subversion</h2> |
| <p> |
| |
| <ul> <!-- list of features --> |
| |
| <li><strong>Most current CVS features.</strong> |
| <p>Subversion is meant to be a better CVS, so it will have most of |
| CVS's features, with as many as possible in the 1.0 release. |
| 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 as network server, WebDAV/DeltaV for protocol |
| (separate standalone server also available)</strong> <p>Subversion |
| uses the HTTP-based WebDAV/DeltaV protocol for network |
| communications, and uses the Apache web server to provide |
| repository-side network service. This gives Subversion a big |
| advantage in stability and interoperability, and provides various |
| key features for free: authentication, basic authorization, wire |
| compression, and repository browsing, for example. For people |
| who simply want to tunnel a custom protocol over ssh, Subversion |
| also has a basic standalone server process.</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 an 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>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> |
| |
| </ul> <!-- end list of features --> |
| |
| <p> |
| <h2>Features planned for after 1.0</h2> |
| <p> |
| |
| <ul> |
| |
| <li><strong>Support for symbolic links</strong> |
| <p>Subversion will handle symbolic links ("shortcuts"). It may |
| also support multiple hard links and other special file types, as |
| long as this can be done portably and with semantics that are |
| compatible with version control.</p> |
| </li> |
| |
| <li><strong>Better merge support</strong> |
| <p>Improved support for selective merges from related lines of |
| development, and for repeated merges. (Currently, |
| Subversion's merge support is essentially the same as |
| CVS's.)</p> |
| </li> |
| |
| <li><strong>Broader WebDAV compatibility</strong> |
| <p>Currently, the Subversion server only responds to a subset of |
| WebDAV requests -- the subset necessary to support Subversion's |
| own functionality. Increased support for WebDAV is a high |
| priority after the 1.0 release, however.</p> |
| </li> |
| |
| <li><strong>Support for plug-in client side diff programs</strong> |
| <p>Subversion knows how to show diffs for text files, and later |
| will also give the user the option to plug in external diff |
| programs for any kind of file. The external program need merely |
| conform to some simple invocation interface (i.e., "<tt>diffprog |
| file1 file2 [file3...]</tt>", where the various files might be |
| different revisions of the same file).</p> |
| </li> |
| |
| <li><strong>Internationalization</strong> |
| <p>Subversion will have I18N support -- commands, user messages, and |
| errors can be customized to the appropriate human language at |
| build-time. Also, there will be I18N support for the <i>names</i> |
| as well as the contents of versioned entities. |
| </li> |
| |
| <li><strong>Progressive multi-lingual support</strong> |
| <p>In order to support keyword expansion and platform-dependent |
| line-ending conversion, CVS makes a distinction between text and |
| binary files, and treats the text files specially.</p> |
| |
| <p>Subversion makes the same distinction, but will offer a more |
| generous notion of what constitutes a text file: not only ASCII, |
| but UTF-* encodings of Unicode too. UTF-8 is the first priority, |
| with other encodings following if needed.</p> |
| </li> |
| |
| </ul> |
| |
| |
| <br> |
| </table> |
| |
| <p> |
| <center> |
| <a href="http://www.linux-magazin.de/Artikel/ausgabe/2003/12/award/award.html"> |
| <img src="images/LnmAwardLogo.jpg" |
| alt="Linux New Media Award -- Newcomer of the Year" |
| align="center"/> |
| </a> |
| </center> |
| </p> |
| |
| <P> |