* subversion/libsvn_repos/repos.c
[svn.git] / www / svn_1.2_releasenotes.html
blob7896e40b4bd2f032a103c66c971d95f28eeae9c7
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 1.2 Release Notes</title>
13 </head>
15 <body>
16 <div class="app">
18 <h1 style="text-align: center">Subversion 1.2 Release Notes</h1>
20 <div class="h2" id="news" title="news">
21 <h2>What's New in Subversion 1.2</h2>
23 <ul>
24 <li>Optional locking ("reserved checkouts")</li>
25 <li>Full WebDAV autoversioning</li>
26 <li>FSFS repository back end is now the default</li>
27 <li>Faster access to old revisions</li>
28 <li>Many improved APIs</li>
29 <li>Many bugfixes</li>
30 </ul>
32 <p>Subversion 1.2 is a superset of all previous Subversion releases.
33 Anything in 1.0.x and 1.1.x is also in 1.2, but 1.2 contains features
34 and bugfixes not present in any earlier release. The new features
35 will eventually be documented in a 1.2 version of the free Subversion
36 book, see
37 <a href="http://svnbook.red-bean.com">svnbook.red-bean.com</a>.</p>
39 </div>
41 <div class="h2" id="downloading" title="downloading">
42 <h2>Downloading</h2>
44 <p>Subversion 1.2 is available as source code in three formats:</p>
46 <ul>
47 <li><a href="http://subversion.tigris.org/downloads/subversion-1.2.3.tar.gz"
48 >subversion-1.2.3.tar.gz</a></li>
49 <li><a href="http://subversion.tigris.org/downloads/subversion-1.2.3.tar.bz2"
50 >subversion-1.2.3.tar.bz2</a></li>
51 <li><a href="http://subversion.tigris.org/downloads/subversion-1.2.3.zip"
52 >subversion-1.2.3.zip</a>&nbsp;(Windows)</li>
53 </ul>
55 <p>For binary packages, please see <a
56 href="project_packages.html#binary-packages">the binary package
57 list</a>. Note that binary packages usually come out about a week
58 after the corresponding source release. The package maintainers are
59 volunteers, so please don't harass them&nbsp;&mdash;&nbsp;they know
60 when a new source release has come out, and they work as fast as they
61 can to make binaries available.</p>
63 <p>For other Subversion releases, see <a
64 href="http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=260&amp;expandFolder=74"
65 >this folder</a>.</p>
67 </div>
69 <div class="h2" id="compatibility" title="compatibility">
70 <h2>Compatibility Concerns</h2>
72 <p>Older clients and servers interoperate transparently with 1.2
73 servers and clients. Of course, some of the new 1.2 features may not
74 be available unless both client and server are the latest version.
75 There is <strong>no need</strong> to upgrade your repositories;
76 Subversion 1.2 can read repositories created by earlier versions. To
77 upgrade an existing installation, just install the newest libraries
78 and binaries on top of the older ones. (<em>WARNING:</em> if you're
79 using Berkeley DB repositories, installing a new binary distribution
80 of Subversion may force you to upgrade Berkeley DB as well, see
81 <a href="#bdb-upgrade">Unexpected Berkeley DB Upgrades</a> below.)</p>
83 <p>Subversion 1.2 maintains API/ABI compatibility with earlier
84 releases, by only adding new functions. A program written to the 1.0
85 or 1.1 API can both compile and run using 1.2 libraries. However, a
86 program written for 1.2 cannot necessarily compile or run against
87 older libraries.</p>
89 <div class="h3" id="output-changes" title="output-changes">
90 <h3>Command Line Output Changes</h3>
92 <p>Although the Subversion developers try hard to keep output from the
93 command line programs compatible between releases, new information
94 sometimes has to be added. This might break scripts that rely on the
95 exact format of the output. In 1.2, the following changes have been
96 made to the output:</p>
98 <ul>
99 <li><p>For <tt>svn update</tt>, the paths have been shifted two
100 columns to the right, thus they start in column five. Column
101 three now contains a <tt>B</tt> when a lock was broken or
102 stolen.</p></li>
103 <li><p><tt>svn status</tt> adds information about locks in the sixth
104 column. Note that this column was previously unused, so the
105 old information is still in the same positions as
106 before.</p></li>
107 <li><p>Several lines were added to the <tt>svn info</tt> output,
108 containing lock information.</p></li>
109 </ul>
111 </div>
113 <div class="h3" id="bdb-upgrade" title="bdb-upgrade">
114 <h3>Unexpected Berkeley DB Upgrades</h3>
116 <p>This is not actually related to the Subversion 1.2 release, but it
117 may affect you if you upgrade to 1.2 via a package distribution
118 system.</p>
120 <p>A lot of operating systems now ship Berkeley DB 4.3. Sometimes the
121 system Berkeley DB libraries can be unintentionally upgraded to 4.3 as
122 part of some other change pulled down via an OS package delivery
123 mechanism&nbsp;&mdash;&nbsp;for example, upgrading one's Subversion
124 package. If this happens to you, you will need
125 to <a href="faq.html#bdb43-upgrade">upgrade existing BerkeleyDB-based
126 repositories to 4.3.</a></p>
128 <p>In particular,
129 the <a
130 href="http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91">latest
131 Windows binary distributions</a> of svn 1.2 (from Branko Cibej) now
132 use Berkeley DB 4.3. Please be warned!</p>
134 </div>
136 </div>
138 <div class="h2" id="known-bugs" title="known-bugs">
139 <h2>Known Bugs</h2>
141 <p>Subversion 1.2.3 fixes several bugs in 1.2.1 and 1.2.0 (1.2.2 was a
142 placeholder release and was never officially blessed). See the <a
143 href="http://subversion.tigris.org/servlets/NewsItemView?newsItemID=1261"
144 >1.2.3 announcement</a> and
145 <a href="http://subversion.tigris.org/servlets/NewsItemView?newsItemID=1202"
146 >1.2.1 announcement</a> for details about those releases.</p>
148 <p>As bugs are fixed in /trunk (the future svn 1.3), they will
149 continue to be backported to the 1.2 line for future 1.2.x
150 releases. Here is
151 the <a
152 href="http://subversion.tigris.org/issues/buglist.cgi?component=subversion&amp;issue_status=UNCONFIRMED&amp;issue_status=NEW&amp;issue_status=STARTED&amp;issue_status=REOPENED">list
153 of open issues</a>.</p>
155 </div>
157 <div class="h2" id="new-features" title="new-features">
158 <h2>New Features</h2>
160 <div class="h3" id="locking" title="locking">
161 <h3>File Locking (<em>requires new client and server</em>)</h3>
163 <p>"Locking" is a long-requested feature, often known in other systems
164 as "reserved checkouts". While Subversion is still primarily a <a
165 href="http://svnbook.red-bean.com/en/1.1/ch02s02.html#svn-ch-2-sect-2.3">copy-modify-merge</a>
166 system focused on parallel development, there is widespread
167 acknowledgement that not all files are easily mergeable &mdash;
168 binary files in particular, such as artwork, compressed files,
169 proprietary binary formats, or any other non-line-based data.</p>
171 <p>The goal of the new locking feature is twofold. First, provide a
172 means to force serialized write-access to a file. Second, provide a
173 communication mechanism to prevent users from wasting time on
174 unmergable changes.</p>
176 <p>This feature is now documented in the nightly build of the svn 1.2
177 book,
178 available <a
179 href="http://svnbook.red-bean.com/nightly/en/svn.advanced.locking.html">here</a>.
180 (Note that this link is temporary; when the 1.2 book is finished, the
181 URL may change.)</p>
183 <p><strong>Warning</strong>: if locks are in use in a repository,
184 then a pre-1.2 libsvn_fs library won't see or enforce them. This is
185 really only relevant to teams of users all accessing the repository
186 via <tt>file://</tt>. For example, an svn 1.2 client might lock a
187 file, but a statically-linked svn 1.1 or 1.0 client (accessing via
188 <tt>file://</tt>) will unknowingly ignore the lock. The workaround,
189 of course, is to set up a real server process &mdash; thereby
190 guaranteeing that only libsvn_fs 1.2 ever accesses the
191 repository.</p>
193 </div>
195 <div class="h3" id="autoversioning" title="autoversioning">
196 <h3>Full DAV autoversioning (<em>mod_dav_svn feature</em>)</h3>
198 <p>Autoversioning is a feature whereby generic WebDAV clients can
199 write to a DeltaV server (like mod_dav_svn), and the server performs
200 commits silently in the background. This means that if you use Apache
201 httpd as your Subversion server, then most modern operating systems
202 can mount the repository as a network share, and non-technical users
203 get "transparent" versioning for free. (Of course, technical users
204 can still use Subversion clients to examine repository history.)</p>
206 <p>Prior to Subversion 1.2, mod_dav_svn had only partial
207 interoperability with generic DAV clients. <a
208 href="http://svnbook.red-bean.com/en/1.1/apc.html">Appendix C</a> in
209 the Subversion 1.1 book documented the trials and tribulations of this
210 exercise. At most, one could use a DAV client to drag files into a
211 mounted repository, but the files couldn't be edited directly from the
212 network share. Some clients even refused to mount the Subversion
213 repository.</p>
215 <p>Now that the repository supports locking, generic DAV clients can
216 happily issue http LOCK and UNLOCK requests, and files can be
217 opened/edited directly from the share. As far as we can tell,
218 mod_dav_svn is now fully implementing the 'autoversioning' feature
219 according to the <a
220 href="http://greenbytes.de/tech/webdav/#draft-ietf-webdav-rfc2518bis">RFC2518bis</a>
221 specification.</p>
223 <p>In informal tests, we've had success reading and writing to
224 Subversion repositories via Windows Web Folders, OS X Finder, Gnome
225 Nautilus, KDE Konqueror, and other DAV clients.</p>
227 <p>To activate autoversioning, simply set <tt>SVNAutoversioning
228 on</tt> in your httpd.conf's Subversion <tt>Location</tt> block. Be
229 warned, however, that making your repository writable by generic DAV
230 clients may result in lots of small commits. A DAV client may seem to
231 be saving a file, but is in fact performing several write operations
232 under the hood, each resulting in a separate commit. Experiences may
233 vary.</p>
235 <p>This feature is now documented in the nightly build of the svn 1.2
236 book,
237 available <a
238 href="http://svnbook.red-bean.com/nightly/en/svn.webdav.html">here</a>.
239 (Note that this link is temporary; when the 1.2 book is finished, the
240 URL may change.)</p>
243 </div>
245 <div class="h3" id="new-switches" title="new-switches">
246 <h3>New subcommand switches:</h3>
247 <dl>
248 <dt><tt>svn log --limit N</tt></dt>
249 <dd>Display only N revisions, then stop. (<em>Note: a 1.2
250 server isn't required for this, but strongly recommended. A
251 pre-1.2 server will still attempt to deliver all revisions over
252 the network, even though the 1.2 client isn't displaying them.</em>)</dd>
254 <dt><tt>svn info --revision (-r)</tt></dt>
255 <dd>Show detailed info on older versions of items.</dd>
257 <dt><tt>svn list --xml</tt></dt>
258 <dd>Output listing in XML.</dd>
260 <dt><tt>svn propset --force</tt></dt>
261 <dd>Allow unusual propsets, such as svn:eol-style on a file with
262 a binary svn:mime-type..</dd>
264 <dt><tt>svn diff --force</tt></dt>
265 <dd>Show differences even on files with binary mime-types.</dd>
267 <dt><tt>svn checkout/update/status/export --ignore-externals</tt></dt>
268 <dd>Don't process any svn:externals during operation.</dd>
270 <dt><tt>svn export --non-recursive (-N)</tt></dt>
271 <dd>Don't export subdirectories.</dd>
273 <dt><tt>svnversion --help</tt></dt>
274 <dd>Show help on <tt>svnversion</tt>.</dd>
276 <dt><tt>svnlook diff --no-diff-added</tt></dt>
277 <dd>Don't show added files in the diffs. Companion to
278 <tt>--no-diff-deleted</tt>.</dd>
280 <dt><tt>svnlook propget/proplist --revprop</tt></dt>
281 <dd>Examine revision props, instead of normal versioned properties.</dd>
283 <dt><tt>svnadmin load --use-pre-commit-hook / --use-post-commit-hook</tt></dt>
284 <dd>Invoke <tt>pre-commit</tt> or <tt>post-commit</tt> hooks
285 when loading a dumpfile into a repository.</dd>
286 </dl>
288 </div>
290 </div>
292 <div class="h2" id="enhancements" title="enhancements">
293 <h2>Enhancements and Bugfixes</h2>
295 <div class="h3" id="xdelta" title="xdelta">
296 <h3>Faster access to old revisions due to xdelta compression
297 (<em>server</em>)</h3>
299 <p>The repository is now using the xdelta differencing algorithm
300 (instead of vdelta) to store compressed difference data. When you
301 upgrade to Subversion 1.2, existing repositories will continue to work
302 fine; the revision history will simply be a mixture of xdelta and
303 vdelta differences.</p>
305 <p>The xdelta algorithm is much faster at reconstructing older files,
306 and thus there's motivation to dump and reload your existing
307 repository. If you do this, you forcibly re-compress all repository
308 history using the xdelta algorithm, resulting in a noticeable speedup
309 in operations that ask the server to reconstruct older data: <tt>svn
310 blame</tt>, <tt>svn checkout</tt>, <tt>svn update</tt>, <tt>svn
311 diff</tt>, <tt>svn merge</tt>, and so on. Even dumping the repository
312 will be faster.</p>
314 <p><strong>Note:</strong> There's a small trade off between speed and
315 disk space. If you choose to re-deltify your whole repository using
316 xdelta, its size will grow by roughly 10 to 15 percent.</p>
318 </div>
320 <div class="h3" id="fsfs" title="fsfs">
321 <h3>FSFS repositories are now the default (<em>server</em>)</h3>
323 <p>After the tremendous success of FSFS repositories since the 1.1
324 release, we've changed the <tt>svnadmin create</tt> command to create
325 FSFS repositories by default. This should provide a friendlier "out
326 of box" experience for new users.</p>
328 <p><strong>Note</strong>: Berkeley DB repositories are
329 <strong>not</strong> being phased out or deprecated in any way. The
330 reliability problems we've seen lie not in Berkeley DB itself, but in
331 the unique way Subversion uses Berkeley DB. Cooperative work is
332 currently underway (with Sleepycat engineers) to address these issues.
333 Berkeley DB repositories are still older and better-tested than FSFS
334 repositories in terms of scalability; the project still recommends you
336 href="http://svnbook.red-bean.com/en/1.1/ch05.html#svn-ch-5-sect-1.3">read
337 about the two back-ends in the book</a> and make an informed
338 choice.</p>
340 </div>
342 <div class="h3" id="win32-password-encryption"
343 title="win32-password-encryption">
344 <h3>Cached passwords are encrypted on Windows (<em>Windows client</em>)</h3>
346 <p>On Windows 2000 and later, the command-line client encrypts the
347 cached passwords used for authenticating to a remote Subversion server
348 (via the <tt>http://</tt> or <tt>svn://</tt> protocols). Existing,
349 unencrypted cached passwords are automatically encrypted the first
350 time they are used.</p>
352 <p>This feature does not extend to stored passphrases for client SSL
353 certificates.</p>
355 <p><strong>Note:</strong> The client uses the standard Windows
356 Cryptography services to encrypt and decrypt the password. Among other
357 things, this means that the encryption key is managed by Windows and
358 can only be accessed by the user account that owns it. If an
359 administrator forcibly resets the account password, the encryption key
360 (and consequently the cached passwords) will no longer be accessible
361 (by the way, the same holds for the contents of NTFS-encrypted
362 files). The Subversion client will detect this and proceed as if the
363 password were not known; that is, it will prompt the user for the
364 password when necessary.</p>
366 </div>
368 <div class="h3" id="bugfixes" title="bugfixes">
369 <h3>Bugfixes:</h3>
370 <p>More than 50 new bugs fixed. See the <a
371 href="http://svn.collab.net/repos/svn/trunk/CHANGES">CHANGES</a> file
372 for details.</p>
374 </div>
376 </div>
378 <div class="h2" id="developer-changes" title="developer-changes">
379 <h2>Developer Changes</h2>
381 <p>The svn_ra.h API has now been "flattened", essentially imitating
382 the same way the svn_fs.h API hides multiple implementations. Instead
383 of making calls into an RA vtable (<tt>ra-&gt;do_foo()</tt>), all RA
384 functions are now usable directly in the form
385 <tt>svn_ra_do_foo()</tt>. This also has the nice side-effect of
386 making svn_ra.h available via SWIG. </p>
388 <p>As with svn 1.1, a number of new 1.2 functions have been
389 introduced, and older versions are now marked deprecated (and will be
390 removed in Subversion 2.0). See the <a
391 href="http://svn.collab.net/repos/svn/trunk/CHANGES">CHANGES</a> file
392 for details. The full list of new 1.2 APIs is <a
393 href="http://svn.haxx.se/dev/archive-2005-04/0319.shtml">here</a>.</p>
395 <p>There has been extensive work on the Python, Perl, and JavaHL
396 bindings. We also now have a preliminary set of Ruby bindings.</p>
398 </div>
400 <div class="h2" id="svn-1.0-deprecation" title="svn-1.0-deprecation">
401 <h2>Deprecation of 1.0.x Series</h2>
403 <p>The Subversion 1.0.x line is no longer supported. This doesn't
404 mean that your 1.0 installation is doomed; if it works well and is all
405 you need, that's fine. "No longer supported" just means we've stopped
406 accepting bug reports against 1.0.x versions, and will not make any
407 more 1.0.x bugfix releases (except perhaps for a critical security or
408 data-loss bug.)</p>
410 </div>
412 </div>
413 </body>
414 </html>