<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style type="text/css"> /* <![CDATA[ */
  @import "branding/css/tigris.css";
  @import "branding/css/inst.css";
  /* ]]> */</style>
<link rel="stylesheet" type="text/css" media="print"
  href="branding/css/print.css"/>
<script type="text/javascript" src="branding/scripts/tigris.js"></script>
<title>Subversion 1.1 Release Notes</title>
</head>

<body>
<div class="app">

<h1 style="text-align: center">Subversion 1.1 Release Notes</h1>
<h2 style="text-align: center">(and State of the Project)</h2>

<p>The <a href="http://svnbook.red-bean.com">Subversion book site</a>
has now been forked, and a separate <a
href="http://svnbook.red-bean.com/svnbook-1.1/index.html">Subversion
1.1 book</a> documents most of <a
href="http://svnbook.red-bean.com/svnbook-1.1/pr02s07.html">the new
1.1 features</a>.  Still, here are some brief release notes.</p>

<h3>Overview</h3>

<p>Subversion 1.1 can best be summarized as: (1) an optional new
non-database repository back-end, and (2) a whole slew of client-side
improvements.  Details are given below.</p>

<p>Note that Subversion 1.1 is a superset of all the Subversion 1.0.x
releases.  The 1.0.x releases contain nothing but critical bugfixes
backported from the 1.1 development line.  Subversion 1.1 introduces
new features and fixes many smaller bugs.</p>

<h3>Compatibility Concerns</h3>

<p>Subversion's compatibility and version-numbering policy is
    documented in the 
    <a href="hacking.html#release-numbering">Hacker's Guide to
    Subversion</a>.  Here's a quick summary:</p>

<ul>

<li><p><em>Database schema</em>: if upgrading to Subversion 1.1, there
        is <strong>no need</strong> to dump and load your repository.
        There will be no changes requiring dump/load before Subversion
        2.0.</p></li>

<li><p><em>Client/server compatibility</em>: a 1.X client and 1.Y
        server are always interoperable.  However, the latest features
        or bugfixes may not be available unless both client and server
        are the latest version.</p></li>

<li><p><em>API/ABI compatibility</em>: the 1.1 release only adds new
        functions; thus a 1.0 program can both compile against and
        use 1.1 libraries at run-time, but a 1.1 program cannot use
        1.0 libraries.</p></li>

</ul>


<h3>New Major Features</h3>

<h4>Non-database repositories  (<em>new server feature</em>)</h4>

<p>It's now possible to create repositories that don't use a
   BerkeleyDB database.  Instead, these new repositories store data in
   the ordinary filesystem.  Because Subversion developers often refer
   to the repository as "The Filesystem", we have adopted the rather
   confusing habit of referring to these new repositories as "fsfs"
   repositories... that is, a Filesystem implementation that uses the
   OS filesystem to store data.</p>

<p>Note that the data files created by fsfs repositories are still in
   a binary format, and are not human editable!</p>

<p>Why would someone choose an fsfs repository over BerkeleyDB?  The
   immediate and obvious advantages are the ability to access a
   repository over a network filesystem, and no more database "wedges"
   needing recovery.  You can read the full list of
   advantages/disadvantages at <a
   href="http://svn.collab.net/repos/svn/trunk/notes/fsfs"
        >http://svn.collab.net/repos/svn/trunk/notes/fsfs</a></p>

<p>To create an fsfs repository, simply run <tt>'svnadmin create
      --fs-type fsfs'</tt>.  Or, if BerkeleyDB wasn't detected at
    compile time, <tt>'svnadmin create'</tt> will default to type
    fsfs.</p>


<h4>Symlink versioning (<em>new client feature</em>)</h4>

<p>This feature allows unix users to place symlinks under version
    control.  (Note: this is <em>not</em> about creating links
    inside a repository that point to other parts of the repository!)</p>

<p> When a user adds a unix symlink to version control and commits,
    the repository stores the object as a file with the "svn:special"
    property attached.  When the client sees this property during
    checkouts and updates, the repository file is translated back into
    a symlink within the working copy.  On win32 systems, the client
    does no translation, and the user sees just an ordinary file.
    (But a win32 user can hand-edit the contents of this file, which
    will still have an affect of changing the symlink on a unix
    system.)</p>


<h4>Client follows renames  (<em>new client feature</em>)</h4>

<p>Subversion makes a lot of noise about the way branches (copies) of
    files and directories maintain historical connections to their
    source, but in Subversion 1.0 only <tt>'svn log'</tt> actually
    follows that history, not <tt>'svn diff'</tt>, <tt>'svn
    merge'</tt>, <tt>'svn list'</tt>, or <tt>'svn cat'</tt>.</p>

<p> This problem (<a href="">issue 1093</a>) is now fixed in
    Subversion 1.1.  All client subcommands now transparently trace
    backwards through renames when examining older versions of files
    and directories.</p>


<h4>Command line auto-escaping of URI and IRIs (<em>new client
feature</em>)</h4>

<p>In the 1.0 command line client, users had to escape URLs manually.
    The client only accepted "legally correct" URLs, such as</p>
<pre>
  svn checkout http://host/path%20with%20space/project/espa%C3%B1a
</pre>
<p>The 1.1 command line client now knows how to do what web-browsers
    have been doing for long time: it auto-escapes characters like
    spaces and other upper-ASCII i18n characters.</p>
<pre>
  svn checkout "http://host/path with space/project/espa&ntilde;a"
</pre>
<p>The definition of an Internationalized URI (IRI) is still a work in
    progress; see <a
    href="http://www.w3.org/International/iri-edit/">the draft spec</a>.</p>



<h4>Localized messages  (<em>new client feature</em>)</h4>

<p>Subversion 1.1 is now using gettext() to display translated error,
   informational, and help messages to the user.  We currently have
   translations for German, Spanish, Polish, Swedish, Norwegian
   Bokmal, Traditional Chinese, Japanese, and Brazilian Portuguese,
   and we're looking for volunteers to write translations for
   other languages.  To localize your Subversion client, just set your
   LANG environment variable:</p>

     <pre>
       $ export LANG=de_DE
       $ svn help cat
       cat: Ausgabe des Inhaltes der angegebenen Dateien oder URLs
       Aufruf: cat ZIEL...
       [...]
     </pre>


<h3>Other Improvements</h3>

<h4>Speed optimizations: (<em>requires both new client and server</em>)</h4>
<p>Faster <tt>checkout</tt>, <tt>update</tt>, <tt>status</tt>, and
      <tt>blame</tt> commands.</p>

<h4>Shareable working copies:  (<em>client fix</em>)</h4>

<p>There have been historical problems with permissions when multiple
users share a working copy.  We believe these problems to be fixed
now, see <a
href="http://subversion.tigris.org/issues/show_bug.cgi?id=1509">issue
#1509</a>.</p>

<h4>New 'store-passwords' runtime variable:  (<em>new client feature</em>)</h4>

<p>The previous <tt>store-auth-creds</tt> runtime variable still
works, but many users were unhappy with it.  It disables <b>all</b>
credentials caching on local disk: passwords, usernames, server certs.
This new runtime variable only disables password caching, so that
server certificates can still be remembered.</p>

<h4>Bugfixes:</h4>
<p>More than 40 "small" bugs fixed.  See the <a
href="http://svn.collab.net/repos/svn/trunk/CHANGES">CHANGES</a> file
      for details.</p>

<h4>New subcommand switches:</h4>
   <dl>
      <dt><tt>svn blame --verbose</tt></dt>
      <dd>show extra annotation information</dd>

      <dt><tt>svn export --native-eol [LF | CRLF]</tt></dt>
      <dd>forcibly export 'svn:eol-style=native' files with a specific
      line ending, either LF or CRLF.  Useful for releases (say,
      creating a win32 zipfile on unix.)</dd>

      <dt><tt>svn add --force</tt></dt> <dd>forcibly recurse into
      already-versioned directories.  This allows users to <tt>svn
      add</tt> every unversioned object, even those hiding deep within a
      working copy.</dd>

      <dt><tt>svnadmin dump --deltas</tt></dt>
      <dd>Creates a smaller dumpfile by including compressed binary
      diffs, rather than fulltexts.</dd>

      <dt><tt>svnadmin create --fs-type [fsfs | bdb]</tt></dt>
      <dd>Create a repository using either 'fsfs' or 'bdb' backend,
      defaults is 'bdb'.</dd>

      <dt><tt>svnadmin recover [--wait]</tt></dt>
      <dd>This command now exits immediately if another process has a
      lock on the repository.  Use the new <tt>--wait</tt> option to
      get the old behavior (where svnadmin blocks indefinitely until
      the lock is freed.)</dd>

      <dt><tt>svnserve --tunnel-user=NAME</tt></dt>
      <dd>Used in conjuction with <tt>--tunnel</tt> switch;  tells
      svnserve to assume that NAME is the authenticated user, rather
      than the UID of the svnserve process.  Useful for users wishing
      to share a single system account over SSH, but maintaining
      separate commit identities.</dd>
 
      <dt><tt>svndumpfilter --quiet</tt></dt>
      <dd>less chatty dumpfiltering.</dd>

      <dt><tt>svnserve      --version</tt><br/>
          <tt>svnversion    --version</tt><br/>
          <tt>svndumpfilter --version</tt></dt>
      <dd>display version of program.</dd>

   </dl>


<h3>Developer Changes</h3>

<p>A number of new 1.1 functions have been introduced, with the "2"
suffix, and the older versions are now marked deprecated (and will be
removed in Subversion 2.0).  For example, a new svn_wc_diff2()
function has superseded svn_wc_diff().  See the <a
href="http://svn.collab.net/repos/svn/trunk/CHANGES">CHANGES</a> file
for details.</p>

<p>There has been extensive work on the python, perl, and java
bindings.  More coverage, more functionality, and they're now fully
integrated into the main Subversion build system (just run 'make
swig-py' or 'make swig-pl' or 'make javahl').</p>


<h3>Testimonials and Roadmap</h3>

<p>See our <a href="roadmap.html">roadmap</a> for what the future
looks like.</p>

<p>If you're looking for testimonials on Subversion, see our new <a
href="http://subversion.tigris.org/testimonials.html">testimonials
page</a>.</p>

<p>As usual, you can find links to other
Subversion-related sites, projects, and essays on our <a
href="http://subversion.tigris.org/links.html">links
page</a>.</p>

</div>
</body>
</html>
