Fix several bugs in svn_rangelist_intersect. Augment its test suite
[svn.git] / www / svn_1.4_releasenotes.html
blob30d8cabe8b94e8a5033cbede10299948bc8f5dab
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.4 Release Notes</title>
13 </head>
15 <body>
16 <div class="app">
18 <h1 style="text-align: center">Subversion 1.4 Release Notes</h1>
20 <div class="h2" id="news" title="news">
21 <h2>What's New in Subversion 1.4</h2>
23 <ul>
24 <li><tt>svnsync</tt>, a new repository mirroring tool</li>
25 <li>Huge working-copy performance improvements</li>
26 <li>Support for BerkeleyDB 4.4 and its "auto recovery" feature</li>
27 <li>Size improvements to the binary delta algorithm</li>
28 <li>A handful of new command switches</li>
29 <li>Many improved APIs</li>
30 <li>More than 40 new bugfixes</li>
31 </ul>
33 <p>Details are described below.</p>
35 <p>Subversion 1.4 is a superset of all previous Subversion releases,
36 and is considered the current "best" release. Anything in 1.0.x,
37 1.1.x, 1.2.x or 1.3.x is also in 1.4, but 1.4 contains features and
38 bugfixes not present in any earlier release. The new features will
39 eventually be documented in a 1.4 version of the free Subversion book,
40 see <a
41 href="http://svnbook.red-bean.com">svnbook.red-bean.com</a>.</p>
43 </div> <!-- news -->
45 <div class="h2" id="compatibility" title="compatibility">
46 <h2>Compatibility Concerns</h2>
48 <p>Older clients and servers interoperate transparently with 1.4
49 servers and clients. Of course, some of the new 1.4 features may not
50 be available unless both client and server are the latest version.
51 There is <strong>no need</strong> to dump and reload your
52 repositories; Subversion 1.4 can read repositories created by earlier
53 versions. To upgrade an existing installation, just install the
54 newest libraries and binaries on top of the older ones.</p>
56 <p>Subversion 1.4 maintains API/ABI compatibility with earlier
57 releases, by only adding new functions. A program written to the 1.0,
58 1.1, 1.2 or 1.3 API can both compile and run using 1.4 libraries.
59 However, a program written for 1.4 cannot necessarily compile or run
60 against older libraries.</p>
62 <div class="h3" id="wc-format-change" title="wc-format-change">
63 <h3>Working Copy and Repository Format Changes</h3>
65 <p>Due to certain improvements and bugfixes made to the working copy
66 library, the version number of the working copy format has been
67 incremented. This means that Subversion clients earlier than 1.4 will
68 <em>not</em> be able to work with working copies produced by Subversion
69 1.4. Similarly, the repository format has changed as well, meaning
70 that pre-1.4 Subversion tools that normally access a repository
71 directly
72 (e.g. <tt>svnserve</tt>, <tt>mod_dav_svn</tt>, <tt>svnadmin</tt>)
73 won't be able to read a repository originally created by Subversion
74 1.4. </p>
76 <p><strong>WARNING:</strong> if a Subversion 1.4 client encounters a pre-1.4
77 working copy, it will <em>automatically</em> upgrade the working copy
78 format as soon as it touches it, making it unreadable by older
79 Subversion clients. If you are using several versions of Subversion
80 on your machine, you need to be careful about which version you use in
81 which working copy, to avoid accidentally upgrading the working copy
82 format. This "auto upgrade" feature, however, does <em>not</em> occur
83 with the new repository format. </p>
85 </div> <!-- wc-format-change -->
87 <div class="h3" id="output-changes" title="output-changes">
88 <h3>Command Line Output Changes</h3>
90 <p>Although the Subversion developers try hard to keep output from the
91 command line programs compatible between releases, new information
92 sometimes has to be added. This might break scripts that rely on the
93 exact format of the output. In 1.4, the following changes have been
94 made to the output:</p>
96 <ul>
98 <li><p>Conflict markers in files now match the file's defined eol-style.</p></li>
100 </ul>
102 </div> <!-- output-changes -->
104 </div> <!-- compatibility -->
106 <div class="h2" id="new-features" title="new-features">
107 <h2>New Features</h2>
109 <div class="h3" id="svnsync" title="svnsync">
110 <h3>svnsync (<em>some features require a 1.4 server</em>)</h3>
112 <p>A new tool &mdash; <a
113 href="http://svn.collab.net/repos/svn/trunk/notes/svnsync.txt"
114 ><tt>svnsync</tt></a> &mdash; is now installed as part of the standard
115 distribution. This tool provides the ability to replicate history
116 from one repository to another. The replication can happen all at
117 once, or can be done incrementally through repeated 'sync' operations.
118 Because the tool uses the abstract network (RA) API, the source and
119 destination repositories can be either local, remote, or any
120 combination thereof.</p>
122 <p><em>Compatibility note</em>: in order to "push" information into a
123 destination repository, any version of the server will suffice. The
124 pushing is done through ordinary network commits. To "pull" history
125 from the source repository, however, requires a 1.4 (or later)
126 server.</p>
128 <p>Usage of this tool will be documented in the Subversion book soon,
129 but for now, running <tt>svnsync help</tt> should suffice; the number
130 of subcommands is very small, and the help system documents them
131 all.</p>
133 </div> <!-- svnsync -->
135 <div class="h3" id="wc-improvements" title="wc-improvements">
136 <h3>Working copy performance improvements (<em>client</em>)</h3>
138 <p>The way in which the Subversion client manages your working copy
139 has undergone radical changes. The <tt>.svn/entries</tt> file is no
140 longer XML, and the client has become smarter about the way it manages
141 and stores property metadata.</p>
143 <p>As a result, there are substantial performance improvements. The
144 new working copy format allows the client to more quickly search a
145 working copy, detect file modifications, manage property metadata, and
146 deal with large files. The overall disk footprint is smaller as well,
147 with fewer inodes being used. Additionally, a number of long standing
148 bugs related to merging and copying have been fixed.</p>
150 <p><strong>WARNING:</strong> A Subversion 1.4 client will upgrade
151 older working copies to the new format WITHOUT WARNING, rendering them
152 unreadable by older Subersion clients. See the section above, titled
153 'Working Copy Format Changes'.</p>
155 </div> <!-- wc-improvements -->
157 <div class="h3" id="bdb-4.4" title="bdb-4.4">
158 <h3>BerkeleyDB 4.4 and auto-recovery (<em>server</em>)</h3>
160 <p>A common problem with previous versions of Subversion is that
161 crashed server processes could leave BerkeleyDB-based repositories in
162 an unusable "wedged" state, requiring administrators to manually
163 intervene and bring back online. (Note: this is not due to bugs in
164 BerkeleyDB, but due to the unorthodox way in which Subversion uses
165 it!)</p>
167 <p>Subversion 1.4 can now be compiled against BerkeleyDB 4.4, which
168 has a new "auto-recovery" feature. If a Subversion server process
169 crashes and leaves the repository in an inconsistent state, the next
170 process which attempts to access the repository will notice the
171 problem, grab exclusive control of the repository, and automatically
172 recover it. In theory (and in our testing), this new feature makes
173 BerkeleyDB-based repositories just as wedge-proof as FSFS
174 repositories.</p>
176 <p><strong>WARNING:</strong> While upgrading to a new version of Berkeley DB
177 will not require you to dump and reload your repository, you
178 <em>will</em> still need to follow the Berkeley DB upgrade regimen to
179 ensure that your repository is accessible by the new version of those
180 libraries. Please see the <a
181 href="http://www.oracle.com/technology/documentation/berkeley-db/db/ref/upgrade/process.html"
182 >Upgrading Berkeley DB installations</a> chapter of the Berkeley DB
183 Reference Guide for instructions on upgrading Berkeley DB
184 environments.</p>
186 </div> <!-- bdb-4.4 -->
188 <div class="h3" id="svndiff1" title="svndiff1">
189 <h3>Binary Delta Encoding Improvements (<em>client and server</em>)</h3>
191 <p>Subversion uses the xdelta algorithm to compute differences between
192 strings of bytes. The output of this algorithm is stored in a custom
193 format called 'svndiff'. svndiff data is what's stored in the
194 repository to represent the difference between successive versions of
195 files, and svndiff data is also transmitted over the wire between
196 client and server (e.g. during updates and commits.)</p>
198 <p>In Subversion 1.4, the svndiff format has been improved to use much
199 less disk space &mdash; up to 50% less on plain text files in some
200 cases. Thus, if you choose to dump and reload your repository, the
201 new repository should be noticeably smaller on disk. (Make sure
202 to <tt>svnadmin create</tt> the new repository using svnadmin 1.4.)
203 Additionally, if a client and server are both version 1.4 , then
204 network traffic becomes smaller and faster.</p>
206 <p><strong>WARNING:</strong> A repository created by svnadmin 1.4 will not be
207 readable by earlier Subversion libraries or tools. However, in order
208 to experience the smaller data format, you'll have to dump and reload
209 your data. If you <em>don't</em> recreate your repository with
210 svnadmin 1.4, it will continue writing data in the older, larger
211 format, and will still be readable by older Subversion tools.</p>
213 </div> <!-- svndiff1 -->
216 <div class="h3" id="new-switches" title="new-switches">
217 <h3>New subcommand switches</h3>
219 This release of Subversion adds a few new switches and options to the
220 command line client. These are:
222 <dl>
223 <dt><tt>svn blame --force</tt></dt>
224 <dd>Displays the output of blame, even if the file is binary.</dd>
226 <dt><tt>svn merge/blame -x</tt></dt>
227 <dd>Merge and blame commands can now pass options to an external
228 diff3 program.</dd>
230 <dt><tt>svn diff/merge -c/--change</tt></dt>
231 <dd>You can now simply write -c N to view or merge a single
232 revision, instead of the cumbersome -r N-1:N.</dd>
234 <dt><tt>svn diff --summarize</tt></dt>
235 <dd>Prints only the list of changed files, in the output format
236 of 'svn status'. This lets you retrieve summaries of changes
237 directly from a repository, whereas 'svn status' operates only
238 on the local changes of your working copy.</dd>
240 <dt><tt>svn diff -x [-u | -b | -w | --ignore-eol-style]</tt></dt>
241 <dd>The diff engine internal to Subversion can now ignore
242 whitespace and eol-style when computing the diff.</dd>
244 </dl>
246 </div> <!-- new-switches -->
248 </div> <!-- new-features -->
250 <div class="h2" id="enhancements" title="enhancements">
251 <h2>Enhancements and Bugfixes</h2>
253 <div class="h3" id="svnserve" title="svnserve">
254 <h3>svnserve as native Windows service (<em>server</em>)</h3>
256 The <tt>svnserve</tt> server can now be run as a Windows service. This
257 allows svnserve to start automatically, at system boot time, without
258 having a user logged in and without the need for an external service
259 'wrapper' program. See <a
260 href="http://svn.collab.net/repos/svn/tags/1.4.0/notes/windows-service.txt"><tt>notes/windows-service.txt</tt></a>
261 for information on setting up <tt>svnserve</tt> as a Windows service.
263 </div> <!-- svnserve -->
265 <div class="h3" id="keychain" title="keychain">
266 <h3>OS X Keychain support (<em>client</em>)</h3>
268 On OS X, the <tt>svn</tt> client now caches passwords in Keychain,
269 rather than in <tt>~/.subversion/auth/</tt>.
271 </div> <!-- keychain -->
273 <div class="h3" id="apis" title="apis">
274 <h3>API improvements (<em>client and server</em>)</h3>
276 <p>If you develop a 3rd-party client application that uses Subversion
277 APIs, you may want to take notice of some new APIs:</p>
279 <ul>
280 <li>The RA replay API, used by <tt>svnsync</tt>, lets you retrieve
281 all the data associated with a set of revisions in a single
282 operation.</li>
284 <li>Many APIs have been revised to newer versions.</li>
285 </ul>
287 </div> <!-- apis -->
289 <div class="h3" id="bugfixes" title="bugfixes">
290 <h3>Other bugfixes (<em>client and server</em>)</h3>
292 <p>The usual slew of heretofore-unreleased bugfixes, more than 40
293 overall. See the
294 <a href="http://svn.collab.net/repos/svn/trunk/CHANGES">CHANGES</a>
295 file for full details.</p>
297 </div> <!-- bugfixes -->
299 </div> <!-- enhancements -->
301 <div class="h2" id="svn-1.2-deprecation" title="svn-1.2-deprecation">
302 <h2>Subversion 1.2.x series no longer supported</h2>
304 <p>The Subversion 1.2.x line is no longer supported. This doesn't
305 mean that your 1.2 installation is doomed; if it works well and is all
306 you need, that's fine. "No longer supported" just means we've stopped
307 accepting bug reports against 1.2.x versions, and will not make any
308 more 1.2.x bugfix releases, except perhaps for absolutely critical
309 security or data-loss bugs.</p>
311 </div> <!-- svn-1.2-deprecation -->
313 </div> <!-- app -->
314 </body>
315 </html>