Sophie

Sophie

distrib > Mandriva > 2008.1 > x86_64 > by-pkgid > 1a3ab26f23e0518b4054a503057127e3 > files > 198

subversion-doc-1.4.6-5mdv2008.1.x86_64.rpm

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Autoversioning</title><link rel="stylesheet" href="styles.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.73.2" /><link rel="start" href="index.html" title="Version Control with Subversion" /><link rel="up" href="svn.webdav.html" title="Appendix C. WebDAV and Autoversioning" /><link rel="prev" href="svn.webdav.basic.html" title="What is WebDAV?" /><link rel="next" href="svn.webdav.clients.html" title="Client Interoperability" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Autoversioning</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="svn.webdav.basic.html">Prev</a> </td><th width="60%" align="center">Appendix C. WebDAV and Autoversioning</th><td width="20%" align="right"> <a accesskey="n" href="svn.webdav.clients.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="svn.webdav.autoversioning"></a>Autoversioning</h2></div></div></div><p>While the Subversion client is not a full DeltaV client, nor
      the Subversion server a full DeltaV server, there's still a
      glimmer of WebDAV interoperability to be happy about:  it's
      called autoversioning.</p><p>Autoversioning is an optional feature defined in the DeltaV
      standard.  A typical DeltaV server will reject an ignorant
      WebDAV client attempting to do a <code class="literal">PUT</code> to a
      file that's under version control.  To change a
      version-controlled file, the server expects a series of proper
      versioning requests: something like
      <code class="literal">MKACTIVITY</code>, <code class="literal">CHECKOUT</code>,
      <code class="literal">PUT</code>, <code class="literal">CHECKIN</code>.  But if the
      DeltaV server supports autoversioning, then write-requests from
      basic WebDAV clients are accepted.  The server behaves as if the
      client <span class="emphasis"><em>had</em></span> issued the proper series of
      versioning requests, performing a commit under the hood.  In
      other words, it allows a DeltaV server to interoperate with
      ordinary WebDAV clients that don't understand versioning.</p><p>Because so many operating systems already have integrated
      WebDAV clients, the use case for this feature can be incredibly
      appealing to administrators working with non-technical users:
      imagine an office of ordinary users running Microsoft Windows or
      Mac OS.  Each user “<span class="quote">mounts</span>” the Subversion
      repository, which appears to be an ordinary network folder.
      They use the shared folder as they always do: open files, edit
      them, save them.  Meanwhile, the server is automatically
      versioning everything.  Any administrator (or knowledgeable
      user) can still use a Subversion client to search history and
      retrieve older versions of data.</p><p>This scenario isn't fiction: it's real and it works, as of
      Subversion 1.2 and later.  To activate autoversioning in
      <span class="command"><strong>mod_dav_svn</strong></span>, use
      the <code class="literal">SVNAutoversioning</code> directive within
      the <code class="filename">httpd.conf</code> Location block, like
      so:</p><pre class="screen">
&lt;Location /repos&gt;
  DAV svn
  SVNPath /var/svn/repository
  SVNAutoversioning on
&lt;/Location&gt;
</pre><p>When SVNAutoversioning is active, write requests from WebDAV
      clients result in automatic commits.  A generic log message is
      auto-generated and attached to each revision.</p><p>Before activating this feature, however, understand what
      you're getting into.  WebDAV clients tend to do
      <span class="emphasis"><em>many</em></span> write requests, resulting in a huge
      number of automatically committed revisions.  For example, when
      saving data, many clients will do a <code class="literal">PUT</code> of a
      0-byte file (as a way of reserving a name) followed by another
      <code class="literal">PUT</code> with the real file data.  The single
      file-write results in two separate commits.  Also consider that
      many applications auto-save every few minutes, resulting in even
      more commits.</p><p>If you have a post-commit hook program that sends email, you
      may want to disable email generation either altogether, or on
      certain sections of the repository; it depends on whether you
      think the influx of emails will still prove to be valuable
      notifications or not.  Also, a smart post-commit hook program
      can distinguish between a transaction created via autoversioning
      and one created through a normal <span class="command"><strong>svn commit</strong></span>.
      The trick is to look for a revision property
      named <code class="literal">svn:autoversioned</code>.  If present, the
      commit was made by a generic WebDAV client.</p><p>Another feature that may be a useful complement
      for <code class="literal">SVNAutoversioning</code> comes from
      Apache's <code class="literal">mod_mime</code> module.  If a WebDAV client
      adds a new file to the repository, there's no opportunity for
      the user to set the the <code class="literal">svn:mime-type</code>
      property.  This might cause the file to appear as generic icon
      when viewed within a WebDAV shared folder, not having an
      association with any application.  One remedy is to have a
      sysadmin (or other Subversion-knowledgeable person) check out a
      working copy and manually set
      the <code class="literal">svn:mime-type</code> property on necessary
      files. But there's potentially no end to such cleanup tasks.
      Instead, you can use the <code class="literal">ModMimeUsePathInfo</code>
      directive in your Subversion <code class="literal">&lt;Location&gt;</code>
      block:</p><pre class="screen">
&lt;Location /repos&gt;
  DAV svn
  SVNPath /var/svn/repository
  SVNAutoversioning on

  ModMimeUsePathInfo on

&lt;/Location&gt;
</pre><p>This directive allows <code class="literal">mod_mime</code> to attempt
      automatic deduction of the mime-type on new files that enter the
      repository via autoversioning.  The module looks at the file's
      named extension and possibly the contents as well; if the file
      matches some common patterns, then the the
      file's <code class="literal">svn:mime-type</code> property will be set
      automatically.</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="svn.webdav.basic.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="svn.webdav.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="svn.webdav.clients.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">What is WebDAV? </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Client Interoperability</td></tr></table></div></body></html>