* subversion/libsvn_fs_fs/structure
[svn.git] / www / index.html
blobb0c4375fed68aa7a3294a3d23550aa0ea9796df9
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml">
4 <head>
5 <style type="text/css"> /* <![CDATA[ */
6 @import "branding/css/tigris.css";
7 @import "branding/css/inst.css";
8 /* ]]> */</style>
9 <link rel="stylesheet" type="text/css" media="print"
10 href="branding/css/print.css"/>
11 <script type="text/javascript" src="branding/scripts/tigris.js"></script>
12 <title>subversion.tigris.org</title>
13 <!-- Custom stylations to hide the obnoxious project info -->
14 <style type="text/css">
15 #projecthome .axial { display: none; }
16 #apphead h1 { display: none; }
17 #longdescription { border: none; }
18 #longdescription h2 { display: none; }
19 #customcontent h2 { display: block; }
20 </style>
21 <!-- End custom stylations -->
22 </head>
24 <body>
26 <!-- The class h2 is included on the main div, because the HTML which the
27 server will wrap around the page includes a <div class="h2">.
28 Thus, we include one here so that the page looks right when previewed
29 locally, *but* we override the border which the CSS assigns to that
30 style, so that we do not get two borders on the live page. -->
31 <div class="h2 app" style="border-left: 0px" id="customcontent">
33 <div style="text-align: center;">
34 <img src="images/subversion_logo_hor-468x64.png" alt="Subversion" />
35 </div>
37 <p>The goal of the Subversion project is to build a <strong>version
38 control system</strong> that is a compelling replacement for CVS in
39 the open source community. The software is released under an <a
40 href="license-1.html">Apache/BSD-style</a> open source
41 license.</p>
43 <div id="latest">
44 <h2>Latest Release</h2>
46 <p>Subversion 1.4.6 is <a
47 href="http://subversion.tigris.org/servlets/NewsItemView?newsItemID=2007"
48 >now available</a>. It is a bugfix release for the 1.4.x line. See
49 the <a href="svn_1.4_releasenotes.html" >1.4.x release notes</a> for
50 what's new in the 1.4 series generally.</p>
51 </div> <!-- latest -->
53 <div id="questions">
54 <h2>Got Questions?</h2>
56 <p style="background: #dd9;">The <a
57 href="http://svnbook.red-bean.com/">Subversion Book</a> and <a
58 href="faq.html">FAQ</a> can usually answer most questions. You can
59 also ask on the <a
60 href="/servlets/ProjectMailingListList">users@subversion.tigris.org</a>
61 mailing list, or in IRC at <tt><a href="irc://irc.freenode.net/"
62 >irc.freenode.net</a></tt>, channel <tt><a
63 href="irc://irc.freenode.net/svn" >#svn</a></tt>. (Note that the
64 mailing lists are <a href="faq.html#moderation">moderated</a>, so
65 there may be a delay before your post shows up.)</p>
66 </div> <!-- questions -->
68 <div id="features">
69 <h2>Subversion's Features</h2>
71 <ul> <!-- list of features -->
73 <li><strong>Most current CVS features.</strong>
74 <p>Subversion is meant to be a better CVS, so it has most of
75 CVS's features. Generally, Subversion's interface to a particular
76 feature is similar to CVS's, except where there's a compelling
77 reason to do otherwise.</p>
78 </li>
80 <li><strong>Directories, renames, and file meta-data are versioned.</strong>
81 <p>Lack of these features is one of the most common complaints
82 against CVS. Subversion versions not only file contents and file
83 existence, but also directories, copies, and renames. It also
84 allows arbitrary metadata ("properties") to be versioned along
85 with any file or directory, and provides a mechanism for
86 versioning the `execute' permission flag on files.
87 </p>
88 </li>
90 <li><strong>Commits are truly atomic.</strong>
91 <p>No part of a commit takes effect until the entire commit has
92 succeeded. Revision numbers are per-commit, not per-file; log
93 messages are attached to the revision, not stored redundantly as
94 in CVS.</p>
95 </li>
97 <li><strong>Apache network server option, with WebDAV/DeltaV
98 protocol.</strong>
99 <p>Subversion can use the HTTP-based WebDAV/DeltaV protocol for network
100 communications, and the Apache web server to provide
101 repository-side network service. This gives Subversion an
102 advantage over CVS in interoperability, and provides various key
103 features for free: authentication, wire compression, and
104 basic repository browsing. </p>
105 </li>
107 <li><strong>Standalone server option.</strong>
108 <p>Subversion also offers a standalone server option using a
109 custom protocol (not everyone wants to run Apache 2.x). The
110 standalone server can run as an inetd service, or in daemon mode,
111 and offers basic authentication and authorization. It can also be
112 tunnelled over ssh.</p>
113 </li>
115 <li><strong>Branching and tagging are cheap (constant time) operations</strong>
116 <p>There is no reason for these operations to be expensive, so
117 they aren't.</p>
119 <p>Branches and tags are both implemented in terms of an
120 underlying "copy" operation. A copy takes up a small, constant
121 amount of space. Any copy is a tag; and if you start committing
122 on a copy, then it's a branch as well. (This does away with CVS's
123 "branch-point tagging", by removing the distinction that made
124 branch-point tags necessary in the first place.)</p>
125 </li>
127 <li><strong>Natively client/server, layered library design</strong>
128 <p> Subversion is designed to be client/server from the beginning;
129 thus avoiding some of the maintenance problems which have plagued
130 CVS. The code is structured as a set of modules with well-defined
131 interfaces, designed to be called by other applications.</p>
132 </li>
134 <li><strong>Client/server protocol sends diffs in both directions</strong>
135 <p>The network protocol uses bandwidth efficiently by transmitting
136 diffs in both directions whenever possible (CVS sends diffs from
137 server to client, but not client to server).</p>
138 </li>
140 <li><strong>Costs are proportional to change size, not data size</strong>
141 <p>In general, the time required for a Subversion operation is
142 proportional to the size of the <i>changes</i> resulting from that
143 operation, not to the absolute size of the project in which the
144 changes are taking place. This is a property of the Subversion
145 repository model.</p>
146 </li>
149 <li><strong>Choice of database or plain-file repository implementations</strong>
150 <p>Repositories can be created with either an embedded database
151 back-end (BerkeleyDB) or with normal flat-file back-end, which
152 uses a custom format.</p>
153 </li>
155 <li><strong>Versioning of symbolic links</strong>
156 <p>Unix users can place symbolic links under version control. The
157 links are recreated in Unix working copies, but not in win32
158 working copies.</p>
159 </li>
161 <li><strong>Efficient handling of binary files</strong>
162 <p>Subversion is equally efficient on binary as on text files,
163 because it uses a binary diffing algorithm to transmit and store
164 successive revisions.</p>
165 </li>
167 <li><strong>Parseable output</strong>
168 <p>All output of the Subversion command-line client is carefully
169 designed to be both human readable and automatically parseable;
170 scriptability is a high priority.
171 </p>
172 </li>
174 <li><strong>Localized messages</strong>
175 <p>Subversion uses gettext() to display translated error,
176 informational, and help messages, based on current locale
177 settings.</p>
178 </li>
180 <li><strong>Repository mirroring</strong>
181 <p>Subversion supplies a utility, <tt>svnsync</tt> for synchronizing
182 (via either push or pull) a read-only slave repository with a
183 master repository.</p>
185 <!-- ### Language bindings/API? -->
187 <!-- TODO: Mention 1.5.0's merge tracking support -->
189 <!-- TODO: Mention 1.5.0's write-through DAV proxy -->
191 </li>
193 </ul>
194 </div> <!-- features -->
196 <div id="roadmap">
197 <h2>Future Subversion Features</h2>
199 <p>See the <a href="roadmap.html">Roadmap</a> page.</p>
200 </div> <!-- roadmap -->
202 </div>
203 </body>
204 </html>