svn commit: r1933967 - in subversion/site/publish: . docs docs/release-notes

[email protected]
Newsgroups gmane.comp.version-control.subversion.svn
Message-ID <177828272928.336107.1639082148536004316@svn03-he-fi>
Author: hartmannathan
Date: Fri May  8 23:25:28 2026
New Revision: 1933967

Log:
In site/publish: Merge the 1.15 release notes and other outstanding changes

* docs/release-notes/index.html
  (#release-notes-future-list): New subsection for release notes of
   not-yet-released versions. Currently, that's 1.15 (see below). This
   subsection allows us to merge release notes to site/publish ahead of the
   actual release, so that members of the wider Subversion community can find
   this information without having to know about or navigate to the staging
   site.

* docs/release-notes/1.15.html
  (): New file. Well, new on site/publish anyway. Release notes for the 1.15
   release line, whose release management is currently in progress.

* docs/release-notes/1.7.html,
  docs/release-notes/1.8.html,
  docs/release-notes/1.9.html,
  docs/release-notes/1.10.html,
  docs/release-notes/1.11.html,
  docs/release-notes/1.12.html,
  docs/release-notes/1.13.html, and
  docs/release-notes/1.14.html
  (#compatibility): Typo/grammar fix. I made this change in site/staging way
   back in 2022 (r1898183)! Why did it wait until now to be merged to
   site/publish? Because that revision also touched the 1.15 release notes,
   which didn't exist on site/publish. Until now.

Added:
   subversion/site/publish/docs/i525-user-guide.html
      - copied unchanged from r1933966, subversion/site/staging/docs/i525-user-guide.html
   subversion/site/publish/docs/release-notes/1.15.html
      - copied unchanged from r1933966, subversion/site/staging/docs/release-notes/1.15.html
Modified:
   subversion/site/publish/   (props changed)
   subversion/site/publish/docs/release-notes/1.10.html
   subversion/site/publish/docs/release-notes/1.11.html
   subversion/site/publish/docs/release-notes/1.12.html
   subversion/site/publish/docs/release-notes/1.13.html
   subversion/site/publish/docs/release-notes/1.14.html
   subversion/site/publish/docs/release-notes/1.7.html
   subversion/site/publish/docs/release-notes/1.8.html
   subversion/site/publish/docs/release-notes/1.9.html
   subversion/site/publish/docs/release-notes/index.html
   subversion/site/publish/index.html   (props changed)
   subversion/site/publish/news.html   (props changed)
   subversion/site/publish/roadmap.html   (props changed)

Copied: subversion/site/publish/docs/i525-user-guide.html (from r1933966, subversion/site/staging/docs/i525-user-guide.html)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ subversion/site/publish/docs/i525-user-guide.html	Fri May  8 23:25:28 2026	(r1933967, copy of r1933966, subversion/site/staging/docs/i525-user-guide.html)
@@ -0,0 +1,368 @@
+<p>This is a detailed user guide to the "i525pod" feature.</p>
+
+<p>$LastChangedDate: 2022-03-24 23:26:24 +0000 (Thu, 24 Mar 2022) $</p>
+
+<p>$LastChangedRevision: 1899185 $</p>
+
+<p>$URL: https://svn.apache.org/repos/asf/subversion/branches/pristines-on-demand-on-mwf/notes/i525/i525-user-guide.md $</p>
+
+<h1>Terminology</h1>
+
+<p>Place-holders:</p>
+
+<ul>
+<li>"i525pod" stands for the name of the feature documented here, that is
+as implemented on branch 'pristines-on-demand-on-mwf' on 2022-03-08.
+(Not any other interpretation of what Issue #525 discusses.)</li>
+<li>"bare" stands for the state of a WC in which the feature "i525pod" is
+enabled, and so contains only some of the pristine copies.</li>
+</ul>
+
+<p>Terminology:</p>
+
+<ul>
+<li>"pristine copy" or "pristine" or "text base": a copy of a file's content
+matching the corresponding base revision in the repository. For any file
+type, not necessarily text format. Enables e.g. local diff and revert,
+and delta update and commit. Stored in the WC metadata area. The term
+herein refers only to file content, although Subversion also stores the
+pristine copy of properties and of tree structure.</li>
+<li>"hydrate" a pristine copy: to fetch the pristine copy from the
+repository and store it in the WC metadata area.</li>
+<li>"dehydrate" a pristine copy: to remove the pristine copy from the WC
+metadata area, while remembering that it may be needed again.</li>
+<li>"sync scope": the set of WC paths in which a Subversion operation will
+check for pristines that need to be hydrated or dehydrated. This is a
+superset of the pristines that the operation will actually need.</li>
+<li>"operation": a high level Subversion operation, such as "diff" or
+"merge" or "update"; e.g. a subcommand of the 'svn' program.</li>
+</ul>
+
+<h1>"i525pod" User Guide</h1>
+
+<h2>Functional and Timing Differences</h2>
+
+<p>This section details the functional and timing differences when the
+"i525pod" feature is used.</p>
+
+<p>In a WC where "i525pod" is enabled (see other sections for how), basic usage
+differs from that found in previous versions of Subversion (1.14 in case of
+doubt) in the following ways.</p>
+
+<p>Each of the following operations, that previously were <em>offline</em> operations,
+will now contact the repository to "hydrate" pristine copies before
+beginning its function, if (and only if) any pristines within the "sync scope"
+are found to be locally modified and currently "dehydrated".</p>
+
+<ul>
+<li><code>svn cat</code> (default case: base version)</li>
+<li><code>svn diff</code> (default case: base against working)</li>
+<li><code>svn resolve</code> (also conflicts resolver in <code>merge</code>, <code>update</code>)</li>
+<li><code>svn revert</code></li>
+</ul>
+
+<p>Notes on previously <em>offline</em> operations,:</p>
+
+<ul>
+<li>Contacting the repository may require authentication.</li>
+<li>If contact or authorization fails, the operation will error out and not
+be available.</li>
+<li>This contact may be needed as a result of a file being modified that is
+not of interest in the current operation, as the "sync scope" is a
+superset of the pristines that this operation will actually need.</li>
+<li>The "hydrating" phase may take a long time, and (currently) gives no
+progress feedback, before the operation begins its usual (previous)
+behaviour.</li>
+</ul>
+
+<p>[TODO: update that if we add progress feedback]</p>
+
+<p>Each of the following operations, that previously were <em>online</em> operations,
+also will now require the same.</p>
+
+<ul>
+<li><code>svn diff</code> (comparing repository to WC)</li>
+<li><code>svn merge</code></li>
+<li><code>svn switch</code></li>
+<li><code>svn update</code></li>
+<li><code>svn checkout --force</code> (similar to update)</li>
+</ul>
+
+<p>Additional notes on previously <em>online</em> operations:</p>
+
+<ul>
+<li>The "hydrating" phase requires its own connection and authentication to
+the repository, which is not [currently] shared with the main part of
+the operation. This may mean a password would have to be entered an
+additional time, for example, depending on the configuration.</li>
+<li>In some edge cases, there may be some difference in the outcome of the
+operation. A possible example is if repository path authorization has
+been withdrawn from a path that now needs to be hydrated; this
+particular case is still under discussion in issue #????.</li>
+</ul>
+
+<p>[TODO: check/eliminate the additional authentication? Issue filed?]</p>
+
+<h2>Disk Space Usage Differences</h2>
+
+<p>This section details the disk space usage differences when the feature is
+used.</p>
+
+<p>Summary:</p>
+
+<ul>
+<li>Without "i525pod" feature, a Subversion WC typically occupies
+approximately twice the size of the working files, because there is a
+pristine copy of every unique working file, plus some other metadata.</li>
+<li>The "i525pod" feature enables a WC to occupy a disk space little greater
+than the size of the working files, in cases where only a small
+proportion (size wise) of the files are locally modified at any one
+time.</li>
+<li>Cases where the feature will not provide much disk space benefit
+include:
+<ul>
+<li>where a large proportion of WC files are duplicates (because there was
+only one pristine copy in the first place for each set of duplicates);</li>
+<li>where the WC is arranged to contain only (predominantly) the files
+that are to be modified in a given work flow.</li>
+</ul></li>
+</ul>
+
+<p>Initial WC size, from checkout/upgrade:</p>
+
+<ul>
+<li>on a fresh checkout, no pristines are stored;</li>
+<li>on enabling the feature in an existing WC (by WC upgrade), pristines are
+removed for unmodified files;</li>
+<li>[TODO] check: are pristines removed in fact for all files not just
+unmodified files?</li>
+</ul>
+
+<p>Size increase and decrease:</p>
+
+<ul>
+<li>the operations listed in the 'Functional differences' section may grow
+and/or shrink the disk space used, as detailed there;</li>
+<li>operations such as editing a file (without Subversion's control), and
+editing its Subversion properties, will not cause any change to the
+pristine storage;</li>
+<li>'commit' will remove the pristines for files it commits that had locally
+modified content;</li>
+</ul>
+
+<p>Disk Full:</p>
+
+<p>Failure modes when disk becomes full during an operation...</p>
+
+<ul>
+<li>[TODO] Investigate.</li>
+</ul>
+
+<h2>Support, Compatibility, Enabling</h2>
+
+<p>In brief:</p>
+
+<p>"i525pod" is an optional feature in Subversion 1.15. It can be enabled
+separately for each WC. By default "i525pod" is not enabled and WCs remain
+compatible with Subversion 1.8 through 1.14. To enable "i525pod" for a given
+WC, check out or upgrade the WC to 1.15's format. A WC in
+1.15's format is no longer compatible with older Subversion
+clients.</p>
+
+<p>For details: see "Working Copy Format Upgrade and Compatibility" section.</p>
+
+<p>[TODO: update if/when we use a specific feature-enable flag.]</p>
+
+<h2>User Guide: Principle Of Operation</h2>
+
+<p>Quoting the original 'BRANCH-README':</p>
+
+<p>"The core idea is that we start to maintain the following invariant: only
+  the modified files have their pristine text-base files available on the
+  disk."</p>
+
+<p>When "i525pod" is enabled in a given WC, Subversion stores pristine copies
+according to the following principle:</p>
+
+<ul>
+<li>It stores the pristine copy of each file that is currently in a locally
+modified state.</li>
+<li>It does not store the pristine copy of each file that is not currently
+in a locally modified state.</li>
+<li>At certain points in its operations, Subversion checks the modified
+state of certain files, and fetches (from the repository) or removes
+their pristine copy accordingly if the state has changed.</li>
+</ul>
+
+<p>Subversion updates the pristine storage to match this principle at certain
+times.
+  - To get into the appropriate state at the beginning of the operation, we
+    walk through the current text-base info in the db and check if the
+    corresponding working files are modified.  The missing text-bases are
+    fetched using the 'svn_ra' layer.  The operations also include a final
+    step during which the no longer required text-bases are removed from
+    disk.</p>
+
+<ul>
+<li>The operations that don't need to access the text-bases (such as "svn
+ls" or the updated "svn st") do not perform this walk and do not
+synchronize the text-base state.</li>
+</ul>
+
+<p>Subversion updates the pristine storage to match this principle at certain
+times.</p>
+
+<ul>
+<li>At the beginning of any high level operation that may need to access
+pristine copies [1], Subversion first checks for files [1] that are now
+locally modified and whose pristine copies are not already present, and
+connects to the repository and fetches them.</li>
+<li>At the beginning and/or the end of those operations, Subversion checks
+for files that are now unmodified, and removes their pristine copies.
+That includes files that became unmodified before the operation, and,
+for some operations (such as commit) also files that became unmodified
+because of the action of the operation.</li>
+<li>It does not matter how a file became modified or unmodified: whether a
+Subversion operation caused that to be the case, or whether the user had
+externally edited the file into that state some time before.</li>
+<li>[1] See "Which operations?"</li>
+<li>[2] See "Which files?" about the "sync scope".</li>
+</ul>
+
+<p>The pristine storage state does not immediately change to match the
+principle:</p>
+
+<ul>
+<li>NOT whenever the user edits a file outside of Subversion's control,</li>
+<li>NOR for files outside the "sync scope" of a given operation,</li>
+<li>NOR during any Subversion operation other than those listed.</li>
+</ul>
+
+<p>The definition of "locally modified" takes into account Subversion's local
+"translation" options such as "keywords" and "eol-style". A working file
+that differs from the repository copy only in keywords and/or EOL-style is
+not regarded as locally modified. When Subversion needs to access a pristine
+copy of such a file, Subversion makes a temporary pristine copy by
+"detranslating" the working file. It may store this in temporary disk space
+for the duration of the operation, but does not keep this indefinitely.</p>
+
+<h3>Which operations will "hydrate" or "dehydrate" pristines?</h3>
+
+<p>The operations deemed to need the pristine copies of locally modified files,
+and which therefore "hydrate" (and "dehydrate") the pristine copies of
+locally modified files, are:</p>
+
+<ul>
+<li><code>H</code> <code>D</code> <code>svn cat</code> (default case: base version)</li>
+<li><code>-</code> <code>D</code> <code>svn commit</code> (dehydrate only)</li>
+<li><code>H</code> <code>D</code> <code>svn diff</code> (default case: base against working)</li>
+<li><code>H</code> <code>D</code> <code>svn resolve</code> (also conflicts resolver in <code>merge</code>, <code>update</code>)</li>
+<li><code>H</code> <code>D</code> <code>svn revert</code></li>
+<li><code>H</code> <code>D</code> <code>svn switch</code></li>
+<li><code>H</code> <code>D</code> <code>svn update</code></li>
+<li><code>-</code> <code>D</code> <code>svn upgrade --compatible-version=1.15</code> (upgrade to 1.15's WC format enables "i525pod")</li>
+</ul>
+
+<h3>Which files does Subversion "hydrate" or "dehydrate" ("sync scope")?</h3>
+
+<p>Which files does Subversion "hydrate" or "dehydrate", whenever an eligible
+operation has the chance to do so?</p>
+
+<p>The files that a given operation "hydrates" and/or "dehydrates" are neither
+all possible files in the working copy, nor the minimal subset necessary for
+the particular operation.</p>
+
+<p>Not maximal:</p>
+
+<ul>
+<li>It considers files to "hydrate" or "dehydrate" within one or more
+sub-trees that encompass all the target paths passed to the operation.
+Depending on the operation, this sub-tree may span anything from the
+whole WC (typical for "update", for example), right down to one specific
+file of interest, or even a directory containing no files at all.</li>
+</ul>
+
+<p>Not minimal:</p>
+
+<ul>
+<li>The operation in the end may not look at all the files in "sync scope":
+for example, because of filtering options (such as <code>--depth</code>,
+<code>--changelist</code>), or because the operation terminated early (for
+example, <code>svn resolve</code>... and choose <code>quit</code>).</li>
+<li>The operation in the end may not read the pristine copy of every file it
+processes: for example, <code>svn diff --properties-only</code>.</li>
+</ul>
+
+<h1>Working Copy Format Upgrade and Compatibility</h1>
+
+<h2>Summary</h2>
+
+<ul>
+<li>"i525pod" is active when a given WC is in 1.15-compatible format.</li>
+<li>To use "i525pod", use <code>svn checkout --compatible-version=1.15</code>
+or <code>svn upgrade --compatible-version=1.15</code>.</li>
+<li>Subversion 1.15 by default uses 1.8-compatible WC format, with "i525pod"
+inactive in those WCs, the same as Subversion 1.8 through 1.14.</li>
+<li>Subversion 1.14 and older cannot read or write a 1.15-compatible WC.</li>
+<li>Working copies cannot be downgraded</li>
+</ul>
+
+<h2>Details</h2>
+
+<p>To use "i525pod" in a given working copy (WC), that WC's metadata needs to be in a new 1.15-compatible format (also called WC format 32). You need a Subversion 1.15 client to create or use a WC in this format.</p>
+
+<p>You can either check out a working copy in this format:</p>
+
+<pre><code>svn checkout --compatible-version=1.15
+</code></pre>
+
+<p>or upgrade an existing working copy from a 1.8-compatible or older format to this format:</p>
+
+<pre><code>svn upgrade --compatible-version=1.15
+</code></pre>
+
+<p>That working copy:</p>
+
+<ul>
+<li>becomes "bare" right away;</li>
+<li>is no longer accessible by Subversion clients below version 1.15;</li>
+<li>cannot be converted back to 1.8-compatible format.</li>
+</ul>
+
+<p>[TODO] We might change this so that upgrading to 1.15-compatible format and enabling "i525pod" are separate steps and the latter is optional.</p>
+
+<p>Subversion 1.15 also supports, and uses by default, the working copy format that has been in use since Subversion 1.8 (format 31). A working copy in that format does not support "i525pod" and is never "bare".</p>
+
+<pre><code>svn checkout --compatible-version=1.8
+svn checkout  # the same, as 1.8 is the default
+</code></pre>
+
+<p>You do not need to use the new format for all your working copies. Subversion 1.15 can work with some working copies in 1.8-compatible format and others in 1.15-compatible format.</p>
+
+<h2>Upgrade / Downgrade</h2>
+
+<p>You can upgrade to 1.15-compatible format (WC format 32) with:</p>
+
+<pre><code>svn upgrade --compatible-version=1.15
+</code></pre>
+
+<p>from either</p>
+
+<ul>
+<li>1.8-compatible format, which Subversion 1.15 can use; or</li>
+<li>1.7-compatible or older format, which Subversion 1.15 cannot use but can upgrade.</li>
+</ul>
+
+<p>By default "svn upgrade" upgrades a working copy to 1.8-compatible format. This is useful for upgrading a WC from the 1.7 and older formats so Subversion 1.8 and newer can use it.</p>
+
+<pre><code>svn upgrade
+svn upgrade --compatible-version=1.8  # the same
+</code></pre>
+
+<p>You CANNOT downgrade any working copy to an older format.</p>
+
+<p>(If you need a working copy in an older format than your current Subversion client supports, you would have to check out a working copy using an older Subversion client that supports the format you want to use.)</p>
+
+<h2>[TODO] Enable/disable "i525pod" in a 1.15-compatible WC</h2>
+
+<p>[TODO] Not yet implemented (2022-03-08).</p>

Modified: subversion/site/publish/docs/release-notes/1.10.html
==============================================================================
--- subversion/site/publish/docs/release-notes/1.10.html	Fri May  8 22:48:06 2026	(r1933966)
+++ subversion/site/publish/docs/release-notes/1.10.html	Fri May  8 23:25:28 2026	(r1933967)
@@ -90,7 +90,7 @@ cannot necessarily compile or run agains
 
 <p>There may be limited cases where the behavior of old APIs has been
 slightly modified from previous releases.  These are cases where edge cases
-of the functionality has been deemed buggy, and therefore improved or removed.
+of the functionality have been deemed buggy, and therefore improved or removed.
 Please consult the
 <a href="https://svn.apache.org/repos/asf/subversion/trunk/notes/api-errata/1.10/"
 >API errata</a> for more detailed information on what these APIs are

Modified: subversion/site/publish/docs/release-notes/1.11.html
==============================================================================
--- subversion/site/publish/docs/release-notes/1.11.html	Fri May  8 22:48:06 2026	(r1933966)
+++ subversion/site/publish/docs/release-notes/1.11.html	Fri May  8 23:25:28 2026	(r1933967)
@@ -97,7 +97,7 @@ cannot necessarily compile or run agains
 
 <p>There may be limited cases where the behavior of old APIs has been
 slightly modified from previous releases.  These are cases where edge cases
-of the functionality has been deemed buggy, and therefore improved or removed.
+of the functionality have been deemed buggy, and therefore improved or removed.
 Please consult the
 <a href="https://svn.apache.org/repos/asf/subversion/trunk/notes/api-errata/1.11/"
 >API errata</a> for more detailed information on what these APIs are

Modified: subversion/site/publish/docs/release-notes/1.12.html
==============================================================================
--- subversion/site/publish/docs/release-notes/1.12.html	Fri May  8 22:48:06 2026	(r1933966)
+++ subversion/site/publish/docs/release-notes/1.12.html	Fri May  8 23:25:28 2026	(r1933967)
@@ -94,7 +94,7 @@ cannot necessarily compile or run agains
 
 <p>There may be limited cases where the behavior of old APIs has been
 slightly modified from previous releases.  These are cases where edge cases
-of the functionality has been deemed buggy, and therefore improved or removed.
+of the functionality have been deemed buggy, and therefore improved or removed.
 Please consult the
 <a href="https://svn.apache.org/repos/asf/subversion/trunk/notes/api-errata/1.12/"
 >API errata</a> for more detailed information on what these APIs are

Modified: subversion/site/publish/docs/release-notes/1.13.html
==============================================================================
--- subversion/site/publish/docs/release-notes/1.13.html	Fri May  8 22:48:06 2026	(r1933966)
+++ subversion/site/publish/docs/release-notes/1.13.html	Fri May  8 23:25:28 2026	(r1933967)
@@ -86,7 +86,7 @@ cannot necessarily compile or run agains
 
 <p>There may be limited cases where the behavior of old APIs has been
 slightly modified from previous releases.  These are cases where edge cases
-of the functionality has been deemed buggy, and therefore improved or removed.
+of the functionality have been deemed buggy, and therefore improved or removed.
 Please consult the
 <a href="https://svn.apache.org/repos/asf/subversion/trunk/notes/api-errata/1.13/"
 >API errata</a> for more detailed information on what these APIs are

Modified: subversion/site/publish/docs/release-notes/1.14.html
==============================================================================
--- subversion/site/publish/docs/release-notes/1.14.html	Fri May  8 22:48:06 2026	(r1933966)
+++ subversion/site/publish/docs/release-notes/1.14.html	Fri May  8 23:25:28 2026	(r1933967)
@@ -96,7 +96,7 @@ cannot necessarily compile or run agains
 
 <p>There may be limited cases where the behavior of old APIs has been
 slightly modified from previous releases.  These are cases where edge cases
-of the functionality has been deemed buggy, and therefore improved or removed.
+of the functionality have been deemed buggy, and therefore improved or removed.
 Please consult the
 <a href="https://svn.apache.org/repos/asf/subversion/trunk/notes/api-errata/1.14/"
 >API errata</a> for more detailed information on what these APIs are

Copied: subversion/site/publish/docs/release-notes/1.15.html (from r1933966, subversion/site/staging/docs/release-notes/1.15.html)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ subversion/site/publish/docs/release-notes/1.15.html	Fri May  8 23:25:28 2026	(r1933967, copy of r1933966, subversion/site/staging/docs/release-notes/1.15.html)
@@ -0,0 +1,953 @@
+<!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>
+<title>Apache Subversion 1.15 Release Notes</title>
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
+<style type="text/css">
+  @import url("/style/site.css");
+</style>
+</head>
+
+<body>
+<!--#include virtual="/site-banner.html" -->
+<!--#include virtual="/site-nav.html" -->
+<div id="site-content">
+<!--#include virtual="/site-notice.html" -->
+<!-- **************** BEGIN CONTENT ***************** -->
+
+<!-- ************************************************ -->
+<!-- Sections start with "###" are either templates   -->
+<!-- or TODOs.  Remove them before release.           -->
+<!-- ************************************************ -->
+
+<h1 style="text-align: center">Apache Subversion 1.15 Release Notes</h1>
+
+<div class="notice">
+<p><span style="color: red"><b>This is work in progress.
+  Subversion 1.15 has not been released yet.</b></span></p>
+</div>
+
+<div class="h2" id="news">
+<h2>What's New in Apache Subversion 1.15
+  <a class="sectionlink" href="#news"
+    title="Link to this section">&para;</a>
+</h2>
+
+<ul>
+  <!-- The main changes...
+  <li><a href="#"
+      >###</a></li>
+  -->
+  <li><a href="#pristines-on-demand"
+      >Pristines On Demand</a></li>
+  <li><a href="#multi-wc-format"
+      >Multi-WC: Multiple Working Copy Format Support</a></li>
+  <li><a href="#streamy-checkouts"
+      >Streamy Checkouts</a></li>
+  <li><a href="#enhancements"
+      >Many enhancements and bug fixes</a></li>
+  <li><a href="#issues"
+      >Known issues in the release</a></li>
+  <!--
+  <li><a href="#troubleshooting"
+      >Troubleshooting issues specific to this release</a></li>
+  -->
+</ul>
+
+<p>Apache Subversion 1.15 is a superset of all previous Subversion
+releases, and is as of the time of its release considered the current
+"best" release.  Any feature or bugfix in 1.0.x through 1.14.x is also
+in 1.15, but 1.15 contains features and bugfixes not present in any
+earlier release.</p>
+
+<p>This page describes only major changes.  For a complete list of
+changes, see the 1.15 section of the <a
+href="https://svn.apache.org/repos/asf/subversion/trunk/CHANGES" >CHANGES</a>
+file.</p>
+
+</div>  <!-- news -->
+
+<div class="h2" id="compatibility">
+<h2>Compatibility Considerations
+  <a class="sectionlink" href="#compatibility"
+    title="Link to this section">&para;</a>
+</h2>
+
+<div class="h3" id="compatibility-client-server">
+<h3>Client/Server Compatibility
+  <a class="sectionlink" href="#compatibility-client-server"
+    title="Link to this section">&para;</a>
+</h3>
+
+<p>Subversion 1.15 clients and servers interoperate transparently with older
+servers and clients.  However, some of the new 1.15 features may not be
+available unless both client and server are the latest version.  There are
+also cases where a new feature will work but will run less efficiently if the
+client is new and the server old.</p>
+
+</div>  <!-- compatibility-client-server -->
+
+<div class="h3" id="compatibility-repository">
+<h3>Repository Compatibility
+  <a class="sectionlink" href="#compatibility-repository"
+    title="Link to this section">&para;</a>
+</h3>
+
+<p>Subversion 1.15 servers can read and write to repositories created by
+earlier versions.</p>
+
+<p>There is <strong>no need</strong> to <a href="http://svnbook.red-bean.com/en/1.8/svn.reposadmin.maint.html#svn.reposadmin.maint.migrate.svnadmin"
+>dump and reload</a> your repositories.
+
+</div>  <!-- compatibility-repository -->
+
+<div class="h3" id="compatibility-working-copy">
+<h3>Working Copy Compatibility
+  <a class="sectionlink" href="#compatibility-working-copy"
+    title="Link to this section">&para;</a>
+</h3>
+
+<p>Subversion 1.15 can upgrade 1.0 through 1.7 working copies in place.  See
+<a href="#wc-upgrade">Upgrading the Working Copy</a> below.</p>
+
+<p>Subversion 1.15 is fully compatible with 1.8 through 1.14 working copies
+(without upgrading) and can be used interchangeably with Subversion 1.8
+through 1.14 clients on these working copies.</p>
+
+<p>Additionally, Subversion 1.15 introduces a new working copy format to
+support the Pristines On Demand feature added in this release.  Working copies
+in this newer format require a Subversion 1.15 or newer client and cannot be
+used with Subversion 1.14 or older clients.</p>
+
+<p>To maximize compatibility, by default both <tt>svn checkout</tt> and
+<tt>svn upgrade</tt> produce working copies which can be used interchangeably
+with Subversion 1.8 through 1.14 clients, except when the user requests
+Pristines On Demand or requests the newer working copy format.</p>
+
+</div>  <!-- compatibility-working-copy -->
+
+<div class="h3" id="compatibility-api-abi">
+<h3>API/ABI compatibility
+  <a class="sectionlink" href="#compatibility-api-abi"
+    title="Link to this section">&para;</a>
+</h3>
+
+<p>Subversion 1.15 maintains API/ABI compatibility with earlier releases, by
+only adding new functions, never removing old ones.  A program written to any
+previous 1.x API can both compile and run using 1.15 libraries.  However, a
+program written for 1.15 cannot necessarily compile or run against older
+libraries.</p>
+
+<p>There may be limited cases where the behavior of old APIs has been slightly
+modified from previous releases.  These are instances where edge cases of the
+functionality have been deemed buggy, and therefore improved or removed.
+Please consult the <a href="https://svn.apache.org/repos/asf/subversion/trunk/notes/api-errata/1.15/"
+>API errata</a> for more detailed information on what these APIs are and what
+impact these changes may have.</p>
+
+</div>  <!-- compatibility-api-abi -->
+
+<div class="h3" id="new-feature-compatibility-table">
+<h3>New Feature Compatibility Table
+  <a class="sectionlink" href="#new-feature-compatibility-table"
+    title="Link to this section">&para;</a>
+</h3>
+<table border="1">
+  <tr>
+    <th>New Feature</th>
+    <th>Minimum Client<sup>1</sup></th>
+    <th>Minimum Server</th>
+    <th>Minimum Repository</th>
+    <th>Notes</th>
+  </tr>
+  <tr>
+    <td>Pristines On Demand</td>
+    <td>1.15</td>
+    <td class='todo'>TODO</td>
+    <td class='todo'>TODO</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Streamy Checkouts</td>
+    <td>1.15</td>
+    <td class='todo'>TODO</td>
+    <td class='todo'>TODO</td>
+    <td></td>
+  </tr>
+</table>
+
+</div>  <!-- new-feature-compatibility-table -->
+
+<div class="h3" id="wc-upgrade">
+<h3>Upgrading the Working Copy
+  <a class="sectionlink" href="#wc-upgrade"
+    title="Link to this section">&para;</a>
+</h3>
+
+<p>Subversion 1.15 is fully compatible with 1.8 through 1.14 working copies.
+These do not need to be upgraded.</p>
+
+<p>Subversion 1.15 can upgrade most 1.0 through 1.7 working copies in place
+but cannot otherwise operate on them until upgraded.</p>
+
+<p>In some cases, it may be more convenient to check out a new working copy,
+rather than to upgrade an older one.</p>
+
+<p>To upgrade a working copy, run the <tt>svn upgrade</tt> command in it.
+This command may take some time to complete.</p>
+
+<p><strong>Caveats:</strong></p>
+
+<p><strong>1.6 and older working copies:</strong> In the event that a 1.6 or
+older working copy requires <tt>svn cleanup</tt>, the cleanup must be
+performed <em>by a 1.6 or older Subversion client</em>.  Subversion 1.15
+cannot upgrade these in place until the cleanup is run with the older
+client.</p>
+
+<p><strong>Corrupt working copies:</strong> Subversion 1.15 cannot upgrade
+<em>corrupt</em> working copies.  Unfixable problems can arise from missing or
+corrupt meta-data inside <tt>.svn</tt> directories.  Such damage to the
+working copy is permanent, and cannot be fixed even if <tt>svn cleanup</tt> is
+run prior to the upgrade.</p>
+
+<p>If your working copy does not upgrade cleanly, please check out a new one.
+</p>
+
+</div>  <!-- wc-upgrade -->
+
+<!-- (This section only makes sense when there are some issues listed in it.)
+<div class="h3" id="compat-misc">
+<h3>Miscellaneous Compatibility Notes
+  <a class="sectionlink" href="#compat-misc"
+    title="Link to this section">&para;</a>
+</h3>
+
+<p>There are some additional specific areas where changes made in this
+release might necessitate further adjustment by administrators or
+users.  We'll cover those in this section.</p>
+
+</div>  <!- - compat-misc - ->
+-->
+
+</div>  <!-- compatibility -->
+
+<div class="h2" id="new-features">
+<h2>New Features
+  <a class="sectionlink" href="#new-features"
+    title="Link to this section">&para;</a>
+</h2>
+
+<div class="h3" id="pristines-on-demand">
+<h3>Pristines On Demand
+  <a class="sectionlink" href="#pristines-on-demand"
+     title="Link to this section">&para;</a>
+</h3>
+
+<p>At the user's option, the storage space requirement of a Subversion working
+copy can be reduced by up to 50%.</p>
+
+<p>The space savings are achieved by reducing or eliminating cached content in
+the working copy administrative directory (<tt>.svn</tt>) at the potential
+cost of additional communication with the repository server.</p>
+
+<div class="h4" id="pristines-on-demand-background">
+<h4>Background
+  <a class="sectionlink" href="#pristines-on-demand-background"
+    title="Link to this section">&para;</a>
+</h4>
+
+<p>All Subversion working copies require extra storage space for the working
+copy administrative directory (<tt>.svn</tt>).  By default, the storage space
+required for this administrative directory is slightly more than the total
+size of the checked out files.  Subversion uses most of that extra space to
+cache a copy of each file's BASE revision ("pristine") 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.</p>
+
+<p>This design optimises the speed and availability of these operations on the
+assumption that network connectivity to the repository may be a bottleneck (or
+unavailable at times) while local storage is assumed to be inexpensive.</p>
+
+<p>However, in some use cases, it may be more sensible to fetch pristines from
+the repository server only when needed ("on demand"), rather than to cache all
+pristines all the time.  Some example use cases:</p>
+
+<ul>
+  <li>Very large files that change infrequently.  In this case, the pristine
+    is usually not needed but takes up space, doubling the storage requirement
+    while providing little or no benefit.</li>
+
+  <li>Working copies on storage-constrained devices with a fast, always-on
+    connection to the repository server.  In this case, network bandwidth is
+    more readily available than local storage, inverting the original design
+    assumption that local storage is inexpensive.</li>
+  
+  <li>Working copies on the same device as the repository.</li>
+</ul>
+
+<p>When using Pristines On Demand, instead of caching pristines for all files
+all the time, Subversion will only fetch and cache those of individual files
+when needed, and will eliminate them when no longer needed.</p>
+
+</div>  <!-- pristines-on-demand-background -->
+
+<div class="h4" id="pristines-on-demand-tradeoffs">
+<h4>Tradeoffs
+  <a class="sectionlink" href="#pristines-on-demand-tradeoffs"
+    title="Link to this section">&para;</a>
+</h4>
+
+<p>The space savings come with some tradeoffs:</p>
+
+<p>A Subversion 1.15 or newer client is required to operate on the working
+copy.  The working copy cannot be used interchangeably with Subversion 1.8
+through 1.14 clients, as these will report an error.</p>
+
+<p>A connection to the repository server is required for more operations as
+compared to a fully-cached working copy.  Depending on network speeds and file
+sizes, the additional network communications may introduce a perceptible delay
+when a pristine is downloaded.</p>
+
+</div>  <!-- pristines-on-demand-tradeoffs -->
+
+<div class="h4" id="pristines-on-demand-checkout">
+<h4>Checking Out a Pristines On Demand Working Copy
+  <a class="sectionlink" href="#pristines-on-demand-checkout"
+    title="Link to this section">&para;</a>
+</h4>
+
+<p>As of Subversion 1.15, users can opt for Pristines On Demand at checkout
+time by giving the <tt>--store-pristine=no</tt> option.  This applies to the
+entire working copy:</p>
+
+<pre>
+$ svn checkout --store-pristine=no $REPO $WC
+</pre>
+
+<p>Otherwise, the default is to check out a normal, fully cached working copy:
+</p>
+
+<pre>
+$ svn checkout $REPO $WC
+</pre>
+
+<p>Users may also write <tt>--store-pristine=yes</tt> to explicitly request a
+a normal, fully cached working copy.  This may be useful in scripting
+scenarios:</p>
+
+<pre>
+$ svn checkout --store-pristine=yes $REPO $WC
+</pre>
+
+</div>  <!-- pristines-on-demand-checkout -->
+
+<div class="h4" id="pristines-on-demand-info">
+<h4>Examining the Working Copy Pristines Type
+  <a class="sectionlink" href="#pristines-on-demand-info"
+    title="Link to this section">&para;</a>
+</h4>
+
+<p>Users can check whether a working copy uses Pristines On Demand with the
+<tt>svn info</tt> command.  This command shows several fields which are new
+in Subversion 1.15, shown in <b>bold</b> here:</p>
+
+<pre>
+$ svn info
+Path: .
+Working Copy Root Path: /ramdrive/svn-trunk
+<span style="font-weight: bold">Working Copy Compatible With Version: 1.15
+Working Copy Format: 32
+Working Copy Store Pristine: no</span>
+URL: https://svn.apache.org/repos/asf/subversion/trunk
+Relative URL: ^/subversion/trunk
+Repository Root: https://svn.apache.org/repos/asf
+Repository UUID: 13f79535-47bb-0310-9956-ffa450edef68
+Revision: 1924024
+Node Kind: directory
+Schedule: normal
+Last Changed Author: dsahlberg
+Last Changed Rev: 1923965
+Last Changed Date: 2025-02-21 11:08:37 -0500 (Fri, 21 Feb 2025)
+</pre>
+
+<p>The relevant one is <tt>Working Copy Store Pristine</tt>. This shows
+<tt>no</tt> when using Pristines On Demand (coinciding with the
+<tt>--store-pristine=no</tt> command line switch), <tt>yes</tt> when using a
+normal, fully cached working copy (coinciding with
+<tt>--store-pristine=yes</tt>).</p>
+
+</div>  <!-- pristines-on-demand-info -->
+
+<div class="h4" id="pristines-on-demand-repo-access">
+<h4>Repository Access Comparison
+  <a class="sectionlink" href="#pristines-on-demand-repo-access"
+    title="Link to this section">&para;</a>
+</h4>
+
+<p>The following table lists the Subversion commands that behave differently
+when using Pristines On Demand.  For each command, it shows the difference in
+how that command accesses the repository.</p>
+
+<table border="1">
+  <tr>
+    <th></th>
+    <th colspan="2">Working Copy Type</th>
+  </tr>
+  <tr>
+    <th>Command</th>
+    <th>Normal</th>
+    <th>Pristines On Demand</th>
+  </tr>
+
+  <tr>
+    <td>cat (BASE)</td>
+    <td>Never</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>Never</td>
+    <td>Hydrate</td>
+  </tr>
+  <tr>
+    <td>revert</td>
+    <td>Never</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> Does not contact the repository server.</li>
+
+  <li><b>Always:</b> Always contacts the repository server.</li>
+
+  <li><b>Hydrate:</b> This operation downloads and keeps the pristine for each
+    file that has a local content modification (i.e., when <tt>svn status</tt>
+    shows <tt>M</tt> in the 1st column) when its pristine is not already
+    stored in the working copy.  See notes 1 and 2 below.</li>
+
+  <li><b>Send-Delta:</b> Sends just the locally modified parts of each file's
+    content.</li>
+
+  <li><b>Send-Full:</b> Sends the complete content of each locally modified
+    file.</li>
+</ul>
+
+</div>  <!-- pristines-on-demand-repo-access -->
+
+<div class="h4" id="pristines-on-demand-notes">
+<h4>Additional Details
+  <a class="sectionlink" href="#pristines-on-demand-notes"
+    title="Link to this section">&para;</a>
+</h4>
+
+<p>Once downloaded, Subversion keeps a file's pristine locally cached in the
+working copy administrative directory so that further operations on the file
+will not download it from the repository again.  Subversion keeps the pristine
+until an operation 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 pristine of each file they
+operated on, because that file will no longer be locally modified, whereas
+<tt>diff</tt> will discard the pristine 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 pristines 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 pristine to be
+downloaded from the repository.</p>
+
+</div>  <!-- pristines-on-demand-notes -->
+
+<div class="h4" id="pristines-on-demand-future">
+<h4>Limitations and Future Possibilities
+  <a class="sectionlink" href="#pristines-on-demand-future"
+    title="Link to this section">&para;</a>
+</h4>
+
+<p>Currently, this feature applies to an entire working copy. That is, either
+all working files have their pristines cached (the default) or all working
+files use pristines on demand (<tt>--store-pristine=no</tt>).  In the future,
+this feature may be enhanced to give users more granular control, such as by
+allowing the <tt>--store-pristine</tt> switch to apply to individual files.
+</p>
+
+<p class='todo'>TODO: Point to the "User Guide" in <a
+href="https://svn.apache.org/repos/asf/subversion/branches/pristines-on-demand-on-mwf/notes/i525/"
+><tt>notes/i525/</tt></a>.  Regenerate <a href="/docs/i525-user-guide.html"
+><tt>/docs/i525-user-guide.html</tt></a> from the source markdown.</p>
+
+</div>  <!-- pristines-on-demand-future -->
+
+</div> <!-- pristines-on-demand -->
+
+<div class="h3" id="multi-wc-format">
+<h3>Multi-WC: Multiple Working Copy Format Support
+  <a class="sectionlink" href="#multi-wc-format"
+     title="Link to this section">&para;</a>
+</h3>
+
+<p>Subversion 1.15 introduces a new working copy format to support Pristines
+On Demand, internally called Format 32.</p>
+
+<p>In past releases, a new working copy format meant that users needed to
+upgrade any existing working copies by running <tt>svn upgrade</tt> in them.
+Once upgraded, older Subversion clients could no longer be used with these
+working copies.</p>
+
+<p>For user convenience, Subversion 1.15 introduces support for multiple
+working copy format versions (Multi-WC).  This provides two benefits:</p>
+
+<ul>
+  <li>Users do not need to upgrade their 1.8 through 1.14 working copies
+    before using Subversion 1.15 with them, unless they want to use Pristines
+    On Demand.</li>
+
+  <li>Users can use a mix of Subversion 1.8 through 1.15 clients
+    interchangeably with working copies in 1.8 through 1.14 format.  This
+    use case can arise when users install multiple versions of Subversion
+    clients, or use 3rd party software that incorporates older Subversion
+    releases.</li>
+</ul>
+
+<div class="h4" id="multi-wc-supported-formats">
+<h4>Supported Working Copy Formats
+  <a class="sectionlink" href="#multi-wc-supported-formats"
+     title="Link to this section">&para;</a>
+</h4>
+
+<p>Subversion 1.15 supports working copies in two format versions:</p>
+
+<table>
+  <tr>
+    <th>Working Copy Format</th>
+    <th>Introduced</th>
+    <th>Supported By</th>
+    <th>Available Pristine Types</th>
+  </tr>
+  <tr>
+    <td>Format 31</td>
+    <td>Subversion 1.8</td>
+    <td>1.8 through 1.15</td>
+    <td>Fully-Cached</td>
+  </tr>
+  <tr>
+    <td>Format 32</td>
+    <td>Subversion 1.15</td>
+    <td>1.15</td>
+    <td>Fully-Cached, Pristines On Demand</td>
+  </tr>
+</table>
+
+<p>Subversion 1.15 uses Format 31 by default, unless the user selects Format
+32 explicitly or opts in to Pristines On Demand.</p>
+
+<p>Future releases may introduce newer working copy formats while keeping
+support for existing formats.</p>
+
+</div> <!-- multi-wc-supported-formats -->
+
+<div class="h4" id="multi-wc-new-cmdline-opts">
+<h4>New Command Line Options
+  <a class="sectionlink" href="#multi-wc-new-cmdline-opts"
+     title="Link to this section">&para;</a>
+</h4>
+
+<p>Two new command line options allow users to control the working copy
+format:</p>
+
+<p><strong><tt>--store-pristine=ARG</tt></strong> can be used with
+<tt>svn checkout</tt>:</p>
+
+<ul>
+  <li><tt>--store-pristine=no</tt>: requests a working copy with Pristines
+    On Demand.  This option implies working copy Format 32, supported by 1.15
+    and newer clients.</li>
+
+  <li><tt>--store-pristine=yes</tt> (default): requests a working copy with
+    traditional fully-cached Pristines.  By default, the working copy will use
+    Format 31, supported by 1.8 and newer clients, unless overridden by
+    <tt>--compatible-version=1.15</tt>; see below.</li>
+</ul>
+
+<p><strong><tt>--compatible-version=ARG</tt></strong>, where <tt>ARG</tt> is
+a version of Subversion, can be used with <tt>svn checkout</tt> and
+<tt>svn upgrade</tt>:</p>
+
+<p>This requests the <em>newest</em> working copy format that is compatible
+with the specified Subversion client version.</p>
+
+<p>When choosing <tt>ARG</tt>, specify the version of the <em>oldest</em>
+Subversion client that will be used with the working copy.</p>
+
+<p><tt>ARG</tt> may be in MAJOR.MINOR format, such as <tt>1.9</tt>.
+<tt>ARG</tt> may also specify a patch version, such as <tt>1.9.5</tt> but the
+third component is ignored because Subversion does not introduce new working
+copy metadata formats in patch releases.</p>
+
+<ul>
+  <li><tt>--compatible-version=1.8</tt> through
+    <tt>--compatible-version=1.14</tt> (default): requests a working copy
+    in Format 31, supported by Subversion 1.8 and newer clients.  Supports
+    traditional fully-cached Pristines only.</li>
+
+  <li><tt>--compatible-version=1.15</tt>: requests a working copy in Format
+    32, supported by Subversion 1.15 and newer clients.  Although this format
+    supports Pristines On Demand, it will use traditional fully-cached
+    Pristines by default, unless overridden by <tt>--store-pristine=no</tt>;
+    see above.</li>
+</ul>
+
+<p>The following table shows which format and pristine type is achieved by
+each combination of the <tt>--store-pristine</tt> and
+<tt>--compatible-version</tt> switches (including when omitting one or both of
+these):
+</p>
+
+<table border="1">
+  <tr>
+    <th>--store-pristine</th>
+    <th>--compatible-version</th>
+    <th>Working Copy Format</th>
+    <th>Pristines</th>
+  </tr>
+  <tr>
+    <td>Omitted</td>
+    <td>Omitted</td>
+    <td>31</td>
+    <td>Fully cached</td>
+  </tr>
+  <tr>
+    <td>Omitted</td>
+    <td>1.8 thru 1.14</td>
+    <td>31</td>
+    <td>Fully cached</td>
+  </tr>
+  <tr>
+    <td>Omitted</td>
+    <td>1.15</td>
+    <td>32</td>
+    <td>Fully cached</td>
+  </tr>
+  <tr>
+    <td>yes</td>
+    <td>Omitted</td>
+    <td>31</td>
+    <td>Fully cached</td>
+  </tr>
+  <tr>
+    <td>yes</td>
+    <td>1.8 thru 1.14</td>
+    <td>31</td>
+    <td>Fully cached</td>
+  </tr>
+  <tr>
+    <td>yes</td>
+    <td>1.15</td>
+    <td>32</td>
+    <td>Fully cached</td>
+  </tr>
+  <tr>
+    <td>no</td>
+    <td>Omitted</td>
+    <td>32</td>
+    <td>Pristines On Demand</td>
+  </tr>
+  <tr>
+    <td>no</td>
+    <td>1.8 thru 1.14</td>
+    <td colspan="2">Not a valid combination</td>
+  </tr>
+  <tr>
+    <td>no</td>
+    <td>1.15</td>
+    <td>32</td>
+    <td>Pristines On Demand</td>
+  </tr>
+</table>
+
+</div> <!-- multi-wc-new-cmdline-opts -->
+
+<div class="h4" id="multi-wc-new-info-output">
+<h4>New <tt>svn info</tt> Output
+  <a class="sectionlink" href="#multi-wc-new-info-output"
+     title="Link to this section">&para;</a>
+</h4>
+
+<p>Users can determine the working copy format and pristine storage type with
+the <tt>svn info</tt> command (new fields shown in <b>bold</b>):</p>
+
+<pre>
+$ svn info
+Path: .
+Working Copy Root Path: /ramdrive/svn-trunk
+<span style="font-weight: bold">Working Copy Compatible With Version: 1.15
+Working Copy Format: 32
+Working Copy Store Pristine: no</span>
+URL: https://svn.apache.org/repos/asf/subversion/trunk
+Relative URL: ^/subversion/trunk
+Repository Root: https://svn.apache.org/repos/asf
+Repository UUID: 13f79535-47bb-0310-9956-ffa450edef68
+Revision: 1924024
+Node Kind: directory
+Schedule: normal
+Last Changed Author: dsahlberg
+Last Changed Rev: 1923965
+Last Changed Date: 2025-02-21 11:08:37 -0500 (Fri, 21 Feb 2025)
+</pre>
+
+<p>Explanation of the new fields:</p>
+
+<ul>
+  <li><tt>Working Copy Compatible With Version</tt> shows the oldest
+    Subversion client that can be used with this working copy.  In this
+    release, this field may show 1.8 or 1.15.</li>
+
+  <li><tt>Working Copy Format</tt> shows the working copy format version.  In
+    this release this field may show 31 or 32.</li>
+
+  <li><tt>Working Copy Store Pristine</tt> shows <tt>no</tt> when
+    using Pristines On Demand, <tt>yes</tt> when using traditional
+    fully-cached pristines.</li>
+</ul>
+
+</div> <!-- multi-wc-new-info-output -->
+
+<div class="h4" id="multi-wc-older-clients">
+<h4>Older Subversion Clients
+  <a class="sectionlink" href="#multi-wc-older-clients"
+     title="Link to this section">&para;</a>
+</h4>
+
+<p>When using the newer Format 32, a Subversion 1.15 or newer client is
+required.  Attempting to operate on such a working copy with an older client
+will result in an error, such as:</p>
+
+<pre>
+svn: E155021: This client is too old to work with the working copy at
+'/path/to/working/copy' (format 32).
+You need to get a newer Subversion client. For more details, see
+  http://subversion.apache.org/faq.html#working-copy-format-change
+</pre>
+
+</div> <!-- multi-wc-older-clients -->
+
+<div class="h4" id="multi-wc-additional-notes">
+<h4>Additional Notes
+  <a class="sectionlink" href="#multi-wc-additional-notes"
+     title="Link to this section">&para;</a>
+</h4>
+
+<p>The metadata format is a property of a particular working copy.  Users may
+have multiple working copies on their machine, with some in Format 31 and
+others in Format 32.</p>
+
+</div> <!-- multi-wc-additional-notes -->
+
+</div> <!-- multi-wc-format -->
+
+<div class="h3" id="streamy-checkouts">
+<h3>Streamy Checkouts
+  <a class="sectionlink" href="#streamy-checkouts"
+     title="Link to this section">&para;</a>
+</h3>
+
+<p>This new feature delivers a noticeable speed-up for <tt>svn checkout</tt>
+and <tt>svn update</tt> while addressing reports of network connection
+timeouts that could occur in the middle of these operations.</p>
+
+<p>Previous versions of the Subversion client would fetch files from the
+server into the working copy's administrative directory, where each file's
+BASE revision is cached, and then separately "install" them to their proper
+location in the working copy. The "install" step involves copying and possibly
+translating the files to account for things like <tt>svn:eol-style</tt> and
+<tt>svn:keywords</tt>. This step was done per-directory and during that time,
+the client would hold the connection to the server open without reading
+anything through it. If this communication silence went on for too long, the
+server would eventually timeout and close the connection from its end, leading
+to annoying errors on the client side.</p>
+
+<p>For example, assuming a 60 second HTTP timeout (the default in httpd 2.4.x)
+and reasonably fast storage on the client side, timeouts could be expected to
+occur while installing any directory about 6 GB in size or larger. (This value
+could vary significantly based on numerous interrelated factors.)</p>
+
+<p>This issue is addressed by making the checkout stream data to both the
+administrative directory and the projected working file simultaneously,
+reducing the actual "install" to an atomic rename. As a result, the
+<tt>svn checkout</tt> and <tt>svn update</tt> operations no longer hold the
+connection open without reading from it, eliminating the timeouts.</p>
+
+<p>Clients will enjoy a noticeable speed-up due to improved network
+performance and reduced storage-level I/O.</p>
+
+<p><strong>Note:</strong> Streamy Checkouts are not yet implemented for
+<tt>svn export</tt>.</p>
+
+</div> <!-- streamy-checkouts -->
+
+</div>  <!-- new-features -->
+
+<div class="h2" id="enhancements">
+<h2>Enhancements and Bugfixes
+  <a class="sectionlink" href="#enhancements"
+    title="Link to this section">&para;</a>
+</h2>
+
+<!-- Don't need to highlight every bugfix, just major ones which aren't in
+     any patch release. -->
+
+<div class="h3" id="cmdline">
+<h3>Command-line client improvements (<em>client</em>)
+  <a class="sectionlink" href="#cmdline"
+    title="Link to this section">&para;</a>
+</h3>
+
+</div> <!-- cmdline -->
+
+<div class="h3" id="server-side-improvements">
+<h3>Server-side improvements
+  <a class="sectionlink" href="#server-side-improvements"
+     title="Link to this section">&para;</a>
+</h3>
+
+</div> <!-- server-side-improvements -->
+
+<div class="h3" id="client-server-improvements">
+<h3>Client- and server-side improvements
+  <a class="sectionlink" href="#client-server-improvements"
+     title="Link to this section">&para;</a>
+</h3>
+
+<div class="h4" id="plaintext-passwords-supported">
+<h4>Plaintext credential cache is supported by default on Unix-like systems
+  <a class="sectionlink" href="#plaintext-passwords-supported"
+     title="Link to this section">&para;</a>
+</h4>
+
+<p>Subversion supports several credential caches to prevent re-typing
+usernames and passwords repeatedly. Which credential cache(s) are used depends
+on the operating system, compile-time options, and the user's runtime
+configuration. On Windows and macOS, Subversion uses OS facilities to save
+passwords in encrypted form. Unix-like operating systems do not have a single
+standard facility to do this&semi; on these systems, Subversion supports up to
+four credential caches: GNOME Keyring, KWallet, GPG Agent, and (as a fallback)
+the Plaintext cache.</p>
+
+<p>The rest of this section discusses the Plaintext cache and is applicable
+only to Subversion clients running on Unix-like operating systems.</p>
+
+<p>In Subversion 1.12 through 1.14, write access to the Plaintext cache was
+disabled by default at <em>compile-time</em>. Binaries compiled in the default
+configuration could not store new plaintext credentials, but would continue to
+use any that were already stored. Users and binary packagers could explicitly
+enable write access to the Plaintext cache by compiling Subversion with the
+<tt>--enable-plaintext-password-storage</tt> option to <tt>configure</tt>.
+(See <a href="https://svn.apache.org/r1845377">r1845377</a>.)</p>
+
+<p>Unfortunately, this has caused a variety of problems for users, especially
+when using the svn client in unattended processes such as CI systems, or on
+remote machines through ssh (a GUI password prompt would display on the remote
+machine, inaccessible to the ssh user). Users reported that they had to employ
+workarounds that caused passwords to be stored in plaintext anyway, or refused
+to upgrade their Subversion installations to these releases. Some binary
+packagers built with <tt>--enable-plaintext-password-storage</tt> while others
+didn't, creating inconsistent experiences within the same release lines.</p>
+
+<p>Based on the feedback received, Subversion 1.15 inverts the default. (See
+<a href="https://svn.apache.org/r1909351">r1909351</a>.) Binaries compiled in
+the default configuration can once again store new plaintext credentials
+(after warning and asking the user). Sites that wish to eliminate this
+possibility can do one or both of the following:</p>
+
+<ul>
+<li>Compile Subversion with the <tt>--disable-plaintext-password-storage</tt>
+    option to <tt>configure</tt> or install a binary package that was compiled
+    this way. Be aware that users can circumvent this by compiling or
+    installing their own Subversion binaries and/or by creating a plaintext
+    cache manually.</li>
+<li>Allow encrypted stores like GNOME Keyring and KWallet, but not the
+    Plaintext cache, by setting <tt>store-plaintext-passwords = no</tt> in
+    Subversion's run-time config settings. See the per user files at
+    <tt>~/.subversion/config</tt> and <tt>~/.subversion/servers</tt>, and the
+    systemwide files at <tt>/etc/subversion/config</tt> and
+    <tt>/etc/subversion/servers</tt>.</li>
+</ul>
+
+<p>For more on plaintext credentials, see the <a
+href="https://subversion.apache.org/faq.html#plaintext-passwords"
+>FAQ entry.</a></p>
+
+</div> <!-- plaintext-passwords-supported -->
+
+</div> <!-- client-server-improvements -->
+
+</div>  <!-- enhancements -->
+
+<div class="h2" id="issues">
+<h2>Known issues in the release
+  <a class="sectionlink" href="#issues"
+    title="Link to this section">&para;</a>
+</h2>
+
+<p>There are no known issues specific to this release at the moment.</p>
+
+<!--
+<p>There are some known issues in the Subversion 1.15 releases.  These
+may be fixed in later 1.15.x releases.</p>
+-->
+
+</div>  <!-- issues -->
+
+<!-- (This section only makes sense when there are some issues listed in it.)
+<div class="h2" id="troubleshooting">
+<h2>Troubleshooting issues specific to this release
+  <a class="sectionlink" href="#troubleshooting"
+    title="Link to this section">&para;</a>
+</h2>
+
+<p>Subversion 1.15 introduces new features and makes use of new techniques
+which can trigger problems not encountered in previous versions. In contrast to
+known issues, things listed here are not due to some bug or issue in Subversion
+itself and therefore cannot be fixed with a new patch release.
+This section lists all known problems and provides instructions to solve them,
+if they occur.</p>
+
+<p>There are no known issues specific to this release at the moment.</p>
+
+</div>  <!- - troubleshooting - ->
+-->
+
+<!-- ***************** END CONTENT ****************** -->
+</div> <!-- #site-content -->
+</body>
+</html>

Modified: subversion/site/publish/docs/release-notes/1.7.html
==============================================================================
--- subversion/site/publish/docs/release-notes/1.7.html	Fri May  8 22:48:06 2026	(r1933966)
+++ subversion/site/publish/docs/release-notes/1.7.html	Fri May  8 23:25:28 2026	(r1933967)
@@ -97,7 +97,7 @@ cannot necessarily compile or run agains
 
 <p>There may be limited cases where the behavior of old APIs has been
 slightly modified from previous releases.  These are cases where edge cases
-of the functionality has been deemed buggy, and therefore improved or removed.
+of the functionality have been deemed buggy, and therefore improved or removed.
 Please consult the
 <a href="https://svn.apache.org/repos/asf/subversion/trunk/notes/api-errata/1.7/"
 >API errata</a> for more detailed information on what these APIs are

Modified: subversion/site/publish/docs/release-notes/1.8.html
==============================================================================
--- subversion/site/publish/docs/release-notes/1.8.html	Fri May  8 22:48:06 2026	(r1933966)
+++ subversion/site/publish/docs/release-notes/1.8.html	Fri May  8 23:25:28 2026	(r1933967)
@@ -93,7 +93,7 @@ cannot necessarily compile or run agains
 
 <p>There may be limited cases where the behavior of old APIs has been
 slightly modified from previous releases.  These are cases where edge cases
-of the functionality has been deemed buggy, and therefore improved or removed.
+of the functionality have been deemed buggy, and therefore improved or removed.
 Please consult the
 <a href="https://svn.apache.org/repos/asf/subversion/trunk/notes/api-errata/1.8/"
 >API errata</a> for more detailed information on what these APIs are

Modified: subversion/site/publish/docs/release-notes/1.9.html
==============================================================================
--- subversion/site/publish/docs/release-notes/1.9.html	Fri May  8 22:48:06 2026	(r1933966)
+++ subversion/site/publish/docs/release-notes/1.9.html	Fri May  8 23:25:28 2026	(r1933967)
@@ -84,7 +84,7 @@ cannot necessarily compile or run agains
 
 <p>There may be limited cases where the behavior of old APIs has been
 slightly modified from previous releases.  These are cases where edge cases
-of the functionality has been deemed buggy, and therefore improved or removed.
+of the functionality have been deemed buggy, and therefore improved or removed.
 Please consult the
 <a href="https://svn.apache.org/repos/asf/subversion/trunk/notes/api-errata/1.9/"
 >API errata</a> for more detailed information on what these APIs are

Modified: subversion/site/publish/docs/release-notes/index.html
==============================================================================
--- subversion/site/publish/docs/release-notes/index.html	Fri May  8 22:48:06 2026	(r1933966)
+++ subversion/site/publish/docs/release-notes/index.html	Fri May  8 23:25:28 2026	(r1933967)
@@ -40,6 +40,12 @@ official support status for the various
     title="Link to this section">&para;</a>
 </h2>
 
+<p>The following are works-in-progress towards future Subversion releases:</p>
+
+<ul id="release-notes-future-list">
+<li><a href="1.15.html">Subversion 1.15</a> – <i>in progress</i></li>
+</ul>
+
 <p>Here are the release notes for the major Subversion releases:</p> 
 
 <ul id="release-notes-list">
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.