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">
5 <style type=
"text/css"> /* <![CDATA[ */
6 @import
"branding/css/tigris.css";
7 @import
"branding/css/inst.css";
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.3 Release Notes
</title>
18 <h1 style=
"text-align: center">Subversion
1.3 Release Notes
</h1>
20 <div class=
"h2" id=
"news" title=
"news">
21 <h2>What's New in Subversion
1.3</h2>
24 <li>Path-based authorization for svnserve
</li>
25 <li>Improved logging and repository listing in mod_dav_svn
</li>
26 <li>Hugely improved python and ruby bindings
</li>
27 <li>A handful of new commandline switches
</li>
28 <li>Some client and server performance improvements
</li>
29 <li>Many improved APIs
</li>
30 <li>More than
30 new bugfixes
</li>
33 <p>Details are described below.
</p>
35 <p>Subversion
1.3 is a superset of all previous Subversion releases.
36 Anything in
1.0.x,
1.1.x, or
1.2.x is also in
1.3, but
1.3 contains
37 features and bugfixes not present in any earlier release. The new
38 features will eventually be documented in a
1.3 version of the free
40 <a href=
"http://svnbook.red-bean.com">svnbook.red-bean.com
</a>.
</p>
44 <div class=
"h2" id=
"downloading" title=
"downloading">
47 <p>Subversion
1.3 is available as source code in three formats:
</p>
50 <li><a href=
"http://subversion.tigris.org/downloads/subversion-1.3.2.tar.gz">subversion-
1.3.2.tar.gz
</a></li>
51 <li><a href=
"http://subversion.tigris.org/downloads/subversion-1.3.2.tar.bz2">subversion-
1.3.2.tar.bz2
</a></li>
52 <li><a href=
"http://subversion.tigris.org/downloads/subversion-1.3.2.zip">subversion-
1.3.2.zip
</a> (Windows)
</li>
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
— 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&expandFolder=74">this folder
</a>.
</p>
66 </div> <!-- downloading -->
69 <div class=
"h2" id=
"compatibility" title=
"compatibility">
70 <h2>Compatibility Concerns
</h2>
72 <p>Older clients and servers interoperate transparently with
1.3
73 servers and clients. Of course, some of the new
1.3 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.3 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.3 maintains API/ABI compatibility with earlier
84 releases, by only adding new functions. A program written to the
1.0,
85 1.1, or
1.2 API can both compile and run using
1.3 libraries.
86 However, a program written for
1.3 cannot necessarily compile or run
87 against 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.3, the following changes have been
96 made to the output:
</p>
100 <li><p>'svnlook
diff' always diffs added files by default now,
101 and the new '--diff-copy-from' option causes those diffs
102 to be against the copyfrom source instead of against an empty
103 file (for consistency with 'svn
diff'). Also, when
104 diffing against the empty file, the diff headers now say
105 "revision 0" instead of the copyfrom revision (again for
106 consistency with 'svn
diff').
</p></li>
108 <li><p>'svn
diff' output is now in native encoding,
109 instead of in UTF8.
</p></li>
111 <li><p>Merge conflict markers are now in the encoding of the user's
112 locale. (Not exactly a command line output change, but near
115 <li><p>'svn ls --verbose' now shows remote locks as '
<tt>O
</tt>', just
116 like 'svn status -u' does.
</p></li>
120 </div> <!-- output-changes -->
122 <div class=
"h3" id=
"bdb-upgrade" title=
"bdb-upgrade">
123 <h3>Unexpected Berkeley DB Upgrades
</h3>
125 <p>This is not actually related to the Subversion
1.3 release, but it
126 may affect you if you upgrade to
1.3 via a package distribution
129 <p>A lot of operating systems now ship Berkeley DB
4.3. Sometimes the
130 system Berkeley DB libraries can be unintentionally upgraded to
4.3 as
131 part of some other change pulled down via an OS package delivery
132 mechanism
— for example, upgrading one's Subversion
133 package. If this happens to you, you will need
134 to
<a href=
"faq.html#bdb43-upgrade">upgrade existing BerkeleyDB-based
135 repositories to
4.3.
</a></p>
137 <p>Since Subversion
1.2, the
<a
138 href=
"http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91"
139 >Windows binary distributions
</a> of Subversion from Branko
Čibej
140 use Berkeley DB
4.3. If you are upgrading from an older version, the
141 above may be of concern to you.
</p>
143 </div> <!-- bdb-upgrade -->
144 </div> <!-- compatibility -->
146 <div class=
"h2" id=
"new-features" title=
"new-features">
147 <h2>New Features
</h2>
149 <div class=
"h3" id=
"svnserve-authz" title=
"svnserve-authz">
150 <h3>Path-based authorization for svnserve (
<em>requires new server
</em>)
</h3>
152 <p><b>svnserve
</b>, the stand-alone Subversion server, is now able to
153 restrict both read and write access using the same
154 authorization-policy files used by
<b>mod_authz_svn
</b>. (Previously,
155 the most one could do with svnserve was restrict write-access via
156 pre-commit hook scripts.)
</p>
158 <p>The authorization file format is the same
160 href=
"http://svnbook.red-bean.com/en/1.1/ch06s04.html#svn-ch-6-sect-4.4.2"
161 >described here
</a>, in Chapter
6 of the Subversion book. You simply
162 need to point to it from your repository's
<em>svnserve.conf
</em>
163 file using the new
<tt>authz-db
</tt> directive:
</p>
167 password-db = userfile
176 <p>Note that when the
<tt>authz-db
</tt> directive is in use, the
177 "blanket" access directives (
<tt>anon-access
</tt>
178 and
<tt>auth-access
</tt>) can still be in effect too. In order to
179 access a path,
<em>both
</em> the
"blanket" directives and per-path
180 authz file must allow access.
</p>
182 </div> <!-- svnserve-authz -->
185 <div class=
"h3" id=
"dav-logging" title=
"dav-logging">
186 <h3>Operational logging for mod_dav_svn (
<em>requires new server
</em>)
</h3>
188 <p>The Apache HTTPD-based server (mod_dav_svn) is now able to log
189 high-level Subversion operations, e.g.,
"update",
"lock",
"commit",
190 etc. This is an improvement over trying to read and understand the
191 mysterious chains of WebDAV methods currently listed in
192 httpd's
<em>accesslog
</em> file.
</p>
194 <p>To activate this new feature, you need to make use of httpd
2.0's
195 built in logging directives such
196 as
<a href=
"http://httpd.apache.org/docs/2.0/logs.html">LogFormat and
197 CustomLog
</a> directives. These directives allow you to flexibly
198 define your own log formats. All you need to know is that mod_dav_svn
199 now sets an environment variable named SVN-ACTION whenever it feels
200 that an http request has completed a particular subversion-related
201 action. So, for example, the following
<em>httpd.conf
</em> directive
202 would log all subversion-related actions to a private logfile, along
203 with timestamp and username:
</p>
205 <pre>CustomLog logs/svn_logfile
"%t %u %{SVN-ACTION}e" env=SVN-ACTION
</pre>
207 <p>Equivalent functionality is planned for svnserve, the standalone
208 server, but not until Subversion
1.4, because the implementation
209 strategy there will be a bit different.
211 href=
"http://subversion.tigris.org/issues/show_bug.cgi?id=2409"
212 >Issue #
2409</a> for details.
</p>
214 </div> <!-- dav-logging -->
217 <div class=
"h3" id=
"bindings-improvements" title=
"bindings-improvements">
218 <h3>Major Language Binding Improvements
</h3>
221 <li>It's now possible to build the SWIG bindings from source without
222 installing SWIG, because we now bundle the generated output of SWIG
223 with the release tarball.
</li>
225 <li>The Python and Ruby bindings now support automatic memory management.
226 If you don't supply Subversion API functions with memory pools,
227 Subversion will automatically manage its own memory.
</li>
229 <li>The Python and Ruby bindings are now more stable, as verified
230 by our expanded test suites.
</li>
232 <li>The Ruby bindings now offer complete coverage of the Subversion
237 </div> <!-- bindings-improvements -->
240 <div class=
"h3" id=
"new-switches" title=
"new-switches">
241 <h3>New subcommand switches
</h3>
243 <dt><tt>svn blame --xml [--incremental]
</tt></dt>
244 <dt><tt>svn status --xml [--incremental]
</tt></dt>
245 <dt><tt>svn info --xml [--incremental]
</tt></dt>
247 <dd>Display output in XML. If
<tt>--incremental
</tt> is also
248 used, then output XML suitable for concatenation.
</dd>
250 <dt><tt>svn add --no-ignore
</tt></dt>
251 <dt><tt>svn import --no-ignore
</tt></dt>
252 <dd>Disregard all
"ignored" file patterns.
</dd>
254 <dt><tt>svnlook tree --full-paths
</tt></dt>
255 <dd>Show full paths instead of indented ones.
</dd>
257 <dt><tt>svnlook diff --diff-copy-from
</tt></dt>
258 <dd>Print differences against copy source.
</dd>
260 <dt><tt>svnlook changed --copy-info
</tt></dt>
261 <dd>Show details for copies.
</dd>
264 </div> <!-- new-switches -->
266 </div> <!-- new-features -->
268 <div class=
"h2" id=
"enhancements" title=
"enhancements">
269 <h2>Enhancements and Bugfixes
</h2>
271 <div class=
"h3" id=
"listparentpath" title=
"listparentpath">
272 <h3>Listing available repositories in mod_dav_svn (
<em>server
</em>)
</h3>
274 <p>The Apache HTTPD-based server can now display (in a web browser)
275 the collection of repositories exported by the SVNParentPath
276 directive: simply set '
<tt>SVNListParentPath
on
</tt>'
277 in
<em>httpd.conf
</em>.
</p>
279 </div> <!-- listparentpath -->
282 <div class=
"h3" id=
"neon25" title=
"neon25">
283 <h3>Interruptible http(s):// connections (
<em>client
</em>)
</h3>
285 <p>If built with Neon
0.25.1 or higher, Subversion can be interrupted
286 during network operations over http:// and https://. This is a
287 long-standing bug that has finally been fixed.
</p>
289 </div> <!-- neon25 -->
292 <div class=
"h3" id=
"_svn-hack" title=
"_svn-hack">
293 <h3>Official support for Windows '_svn' directories (
<em>client and
294 language bindings
</em>)
</h3>
296 <p>The
"<b>_svn</b>" hack is
298 href=
"http://svn.collab.net/repos/svn/trunk/notes/asp-dot-net-hack.txt">officially
299 supported
</a>: since some versions of ASP.NET don't allow directories
300 beginning with dot (e.g.,
".svn", the standard Subversion working copy
301 administrative directory), the
<b>svn
</b> command line client
302 and
<b>svnversion
</b> now treat the environment variable
303 SVN_ASP_DOT_NET_HACK specially on Windows. If this variable is set
304 (to any value), they will use
"_svn" instead of
".svn". We recommend
305 that all Subversion clients running on Windows take advantage of this
306 behaviour. Note that once the environment variable is set, working
307 copies with standard
".svn" directories will stop working, and will
308 need to be re-checked-out to get
"_svn" instead.
</p>
310 <p class=
"warningmark">Third party software that uses the Subversion
311 libraries needs to be updated to make the equivalent API calls. See
313 APIs:
<b>svn_wc_is_adm_dir
</b>,
<b>svn_wc_get_adm_dir
</b>, and
314 <b>svn_wc_set_adm_dir
</b>. Setting the SVN_ASP_DOT_NET_HACK
315 environment variable only works for the above-mentioned client
316 programs, and only on Windows. It doesn't work for libraries; users
317 of the libraries should call the new APIs, which are
318 platform-independent. See
<a
319 href=
"http://subversion.tigris.org/servlets/ReadMsg?list=dev&msgNo=105810"
320 >this mail
</a> and its thread for more details.
</p>
322 </div> <!-- _svn-hack -->
325 <div class=
"h3" id=
"performance" title=
"performance">
326 <h3>Performance improvements (
<em>client and server
</em>)
</h3>
328 <p><b>svn status
</b> is a bit faster, as is any command that involves
329 tracing long lines of history, such as
<b>svn log
</b>. See
<a
330 href=
"http://subversion.tigris.org/issues/show_bug.cgi?id=1970"
331 >issue #
1970</a> for details.
</p>
333 <p>It's particularly noticeable when
<b>svn blame
</b> is run on a file with a
334 large amount of history, or when invoking any command on an older
337 </div> <!-- performance -->
340 <div class=
"h3" id=
"apis" title=
"apis">
341 <h3>API improvements (
<em>client and server
</em>)
</h3>
343 <p>If you develop a
3rd-party client application that uses Subversion
344 APIs, you may want to take notice of some new APIs:
</p>
347 <li>The APIs used by 'status --show-updates' now make URI, youngest
348 revision, date last modified, youngest node kind, and most
349 recent author available as reported by the server, in addition
350 to the status reflected by the working copy.
</li>
352 <li>There's now a data-transfer progress callback for ra_dav.
</li>
354 <li>The repository root URL is now being stored as a separate field
355 in .svn/entries.
</li>
357 <li>Many APIs have been revised to newer versions.
</li>
362 <div class=
"h3" id=
"bugfixes" title=
"bugfixes">
363 <h3>Other bugfixes (
<em>client and server
</em>)
</h3>
365 <p>The usual slew of heretofore-unreleased bugfixes. See the
366 <a href=
"http://svn.collab.net/repos/svn/trunk/CHANGES">CHANGES
</a>
367 file for full details.
</p>
369 </div> <!-- bugfixes -->
371 <div class=
"h3" id=
"wc-props-change" title=
"wc-props-change">
372 <h3>Changes in the working copy format
</h3>
374 <p>Subversion
1.3 features a minor change in the way properties are
375 stored in the working copy, which reduces the size of some working
376 copies significantly. From the user's point of view, the change is
377 completely transparent. That is, your working copies will go on
378 working, even with older clients.
</p>
380 <p>However, programs that interact with the working copy property
381 files without using the official Subversion APIs or binaries may
382 experience problems.
<a href=
"http://tmate.org/svn/">JavaSVN
</a> is
383 the only project that we know of that falls into this category, and
384 they have been notified accordingly. If you happen to be using or
385 developing software that, similarly, bypasses the Subversion APIs,
386 then you may need to make a minor alteration to the parsing routines.
388 href=
"http://svn.collab.net/viewcvs/svn/trunk/subversion/libsvn_wc/props.c?r1=16854&r2=16855&diff_format=h">revision
389 16855</a> of the Subversion repository for details.
</p>
391 </div> <!-- wc-props-change -->
392 </div> <!-- enhancements -->
394 <div class=
"h2" id=
"svn-1.1-deprecation" title=
"svn-1.1-deprecation">
395 <h2>Subversion
1.1.x series no longer supported
</h2>
397 <p>The Subversion
1.1.x line is no longer supported. This doesn't
398 mean that your
1.1 installation is doomed; if it works well and is all
399 you need, that's fine.
"No longer supported" just means we've stopped
400 accepting bug reports against
1.1.x versions, and will not make any
401 more
1.1.x bugfix releases, except perhaps for absolutely critical
402 security or data-loss bugs.
</p>
404 </div> <!-- svn-1.1-deprecation -->