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

Reply via email to