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

Reply via email to