You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ha...@apache.org on 2022/02/18 03:36:39 UTC

svn commit: r1898168 - /subversion/site/staging/docs/release-notes/1.15.html

Author: hartmannathan
Date: Fri Feb 18 03:36:39 2022
New Revision: 1898168

URL: http://svn.apache.org/viewvc?rev=1898168&view=rev
Log:
* site/staging/1.15.html:
  (#bare-working-copies): Incorporate julianfoad's suggested changes, copied
   almost verbatim (I added formatting and some minor edits that I hope
   improve it!) from Julian's 2022 Feb 17 mail "Re: A two-part vision for
   Subversion and large binary objects." archived at [1] and other places.

[1] https://lists.apache.org/thread/w912o5hnnf3ntqymxhvwt27r3yl7fh15  

Suggested by: julianfoad

Modified:
    subversion/site/staging/docs/release-notes/1.15.html

Modified: subversion/site/staging/docs/release-notes/1.15.html
URL: http://svn.apache.org/viewvc/subversion/site/staging/docs/release-notes/1.15.html?rev=1898168&r1=1898167&r2=1898168&view=diff
==============================================================================
--- subversion/site/staging/docs/release-notes/1.15.html (original)
+++ subversion/site/staging/docs/release-notes/1.15.html Fri Feb 18 03:36:39 2022
@@ -1,4 +1,4 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
@@ -178,8 +178,11 @@ the size of the checked out files.</p>
 
 <p>By default, the total storage space required is slightly more than double
 the size of the checked out files. Subversion uses most of that extra space to
-cache each file's BASE revision so that many operations can work faster and
-offline.</p>
+cache each file's BASE revision so that operations such as <tt>diff</tt> and
+<tt>revert</tt> can work offline, and <tt>commit</tt> can send just the
+modified portions of a file to the repository server rather than the whole
+file. This optimises the speed and availability of these operations, on the
+assumption that network throughput to the server is often a bottleneck.</p>
 
 <p>Starting in 1.15, users can check out a bare working copy to cut the
 storage requirement by up to 50%. Instead of caching the BASE revision of all
@@ -202,8 +205,9 @@ $ svn checkout --foo --bar $REPO $WC
 
 <p>The command to check out a normal working copy is unchanged.</p>
 
-<p>The following table lists all Subversion commands and whether they need to
-access the repository:</p>
+<p>The following table lists the Subversion commands that behave differently
+in a bare working copy. For each command, it shows the difference in how that
+command accesses the repository.</p>
 
 <table border="1">
   <tr>
@@ -215,39 +219,85 @@ access the repository:</p>
     <th>Normal</th>
     <th>Bare</th>
   </tr>
+
+  <tr>
+    <td>cat (BASE)</td>
+    <td>No</td>
+    <td>Hydrate</td>
+  </tr>
+  <tr>
+    <td>commit</td>
+    <td>Send-Delta</td>
+    <td>Send-Full</td>
+  </tr>
+  <tr>
+    <td>conflict resolving (resolve/merge/up/sw)</td>
+    <td>Sometimes</td>
+    <td>Sometimes (...)</td>
+  </tr>
+  <tr>
+    <td>diff (BASE)</td>
+    <td>No</td>
+    <td>Hydrate</td>
+  </tr>
   <tr>
-    <td></td>
-    <td></td>
-    <td></td>
+    <td>revert</td>
+    <td>No</td>
+    <td>Hydrate</td>
+  </tr>
+  <tr>
+    <td>update/switch</td>
+    <td>Always</td>
+    <td>Always + Hydrate</td>
   </tr>
 </table>
 
 <p>Legend:</p>
 
 <ul>
-  <li><b>Never:</b> This operation never contacts the repository.</li>
+  <li><b>Never:</b> Does not contact the repository server.</li>
+
+  <li><b>Always:</b> Always contacts the repository server.</li>
 
-  <li><b>Remote URL:</b> This operation contacts the repository only if given
-    a repository path. It does not contact the repository when operating on a
-    local path.</li>
+  <li><b>Hydrate:</b> This operation downloads and keeps the BASE revision for
+    each file that has a local content modification (<tt>svn status</tt> shows
+    <tt>M</tt> in the 1st column) when its BASE is not already stored in the
+    working copy. See notes 1 and 2 below.</li>
 
-  <li><b>When Modified:</b> This operation contacts the repository when the
-    path in question is locally modified ('svn status' shows 'M' in the 1st
-    column) or is provided with a repository URL.</li>
+  <li><b>Send-Delta:</b> Sends just the locally modified parts of each file's
+    content.</li>
 
-  <li><b>Always:</b> This operation always contacts the repository.</li>
+  <li><b>Send-Full:</b> Sends the complete content of each locally modified
+    file.</li>
 </ul>
 
 <p>Additional Details:</p>
 
-<p>When operating on a bare working copy, the Subversion client will
-download the BASE revision of a file when it detects that the file is
-locally modified and an operation involving that file requires the
-BASE revision.</p>
-
-<p>Once downloaded, the BASE revision will remain locally cached until a
-further operation either restores the file to an unmodified state or
-detects that the file is no longer modified.</p>
+<p>Once downloaded, Subversion keeps a file's base locally cached in the
+working copy, so that further operations on the file will not download the
+base from the repository again. It keeps the base in this way until one of
+these operations either restores the file to an unmodified state or detects
+that the file is no longer modified. For example, <tt>commit</tt> and
+<tt>revert</tt> will immediately discard the base of each file they operated
+on, because that file will no longer be locally modified, whereas
+<tt>diff</tt> will discard the base only if it finds there are no
+differences.</p>
+
+<p><b>Note 1:</b> At the beginning of a given operation, Subversion will
+download missing bases of <strong>at least</strong> the files that this
+particular operation will use. It may download those of other files too, that
+this particular operation will not use. For example, in the initial
+implementation of this feature, Subversion considers all potential files in
+the smallest subtree that spans all the target files of the operation. The
+details of this behaviour are subject to change before and after the feature
+is released.</p>
+
+<p><b>Note 2:</b> In evaluating differences between a file's working text and
+its base text, Subversion takes into account the "EOL style" and "keywords"
+settings. (See the <tt>svn:eol-style</tt> and <tt>svn:keywords</tt>
+properties.) Just as <tt>svn status</tt> does not show <tt>M</tt> in the first
+column for such differences, neither will these cause the base to be
+downloaded from the repository.</p>
 
 </div> <!-- bare-working-copies -->