On Thu, Feb 17, 2022 at 9:41 AM Julian Foad <jul...@foad.me.uk> wrote: > > Mark Phippard wrote: > [...] > >currently there is no pristine. Now I run svn diff and I see the > >result. The command ends ... there is still no pristine. [...] If, when the > >command finishes, there are no pristines stored on disk ... then there > >are no pristines. > The bit you are missing is, at the end of a diff command, the diffed file is > still locally modified so the pristine is not felted then, it is kept in the > store indefinitely. Only when some subsequent command finds it unmodified, > only then will it be removed. (No matter whether it became unmodified by an > svn operation such as revert or commit, in which case the command that did > that would have removed the pristine; or if it was reverted by the user > without involving svn.) > > I agree about the insufficiency of current docs and how the commands could be > listed in full.
An initial, very-rough, draft, of what might go in the 1.15 release notes, at least as I see this feature. Obviously, let me know if I'm totally off here! New Client Features -> Bare Working Copies All Subversion working copies require extra storage space in addition to the size of the checked out files. By default, the total storage space required is slightly more than double the size of the checked out files. Subversion uses most of that extra space to cache each file's BASE revision so that many operations can work faster and offline. Starting in 1.15, users can check out a bare working copy to cut the storage requirement by up to 50%. Instead of caching the BASE revision of all files all the time, Subversion will only fetch and cache those of individual files when needed, and will eliminate them when no longer needed. The space savings come at a tradeoff of requiring a connection to the repository for more operations as compared to a normal working copy and may, depending on network speeds and file sizes, introduce a perceptible delay when a BASE file is downloaded. This feature is motivated by use cases involving very large versioned files that change infrequently, where keeping the cached BASE copy wastes space and provides little or no benefit. This feature may also be useful in other scenarios, such as where a very fast connection to the server is available, the repository is local, available storage space is very limited, etc. To check out a bare working copy: $ svn checkout --foo --bar $REPO $WC The command to check out a normal working copy is unchanged. The following table lists all Subversion commands and whether they need to access the repository: +----------+-------------------------------+ | | Working Copy Type | +----------+---------------+---------------+ | Command | Normal | Bare | +----------+---------------+---------------+ | add | Never | Never | | . | | | | . | | | | . | | | | checkout | Always | Always | | . | | | | . | | | | . | | | | diff | Remote URL | When modified | | . | | | | . | | | | . | | | | revert | Never | Always | | . | | | | . | | | | . | | | +----------+---------------+---------------+ Legend: * Never: This operation never contacts the repository. * Remote URL: This operation contacts the repository only if given a repository path. It does not contact the repository when operating on a local path. * When Modified: This operation contacts the repository when the path in question is locally modified ('svn status' shows 'M' in the 1st column) or is provided with a repository URL. * Always: This operation always contacts the repository. Additional Details: When operating on a bare working copy, the Subversion client will download the BASE revision of a file when it detects that the file is locally modified and an operation involving that file requires the BASE revision. Once downloaded, the BASE revision will remain locally cached until a further operation either restores the file to an unmodified state or detects that the file is no longer modified. Cheers, Nathan