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 -->