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