<!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>
<title>Working Copy Design for Svn Obliterate</title>
</head>

<body>

<div class="h1">
<h1 style="text-align: center">Working Copy Design for Svn Obliterate</h1>
</div>

<div class="h1">
<h2>Table of Contents</h2>
<ol id="toc">
  <li><a href="#xxx">XXX</a>
  <ol>
    <li><a href="#xxx.yyy">YYY</a>
    </li>
  </ol>
  </li>
</ol>
</div>

<!--
  ================================================================
    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.
  ====================================================================

  This software consists of voluntary contributions made by many
  individuals on behalf of CollabNet.
-->


<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->

<div class="h2" id="xxx" title="#xxx">
  <h2>XXX</h2>


  <div class="h3" id="xxx.yyy" title="#xxx.yyy">
    <h3>A design note re. making 'update' work without deltas.</h3>

    <p>When Subversion updates a WC, it normally expects to transfer just
      the changes. Since the server in this case doesn't have a copy of the
      old version, we need to modify the 'update' mechanism to cope with
      that.  We also need to consider how the behaviour of this kind of
      update (a nonexistent version to/from an existing version) relates to
      the behaviour you get if you ask to update a nonexistent version of a
      normal Subversion-controlled file to/from an existing version of it.
      There are important differences.</p>

  </div>

</div>


<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->

</body>
</html>
