== Storage Structure for Shelving ==


=== Shelving v3 (trunk) ===

In development in trunk (1.12-dev), marked "experimental".

Each shelf-version is stored in an entire copy of the WC. The shelves are
stored in a sibling to the user's WC, at '<WC-root-dir>.shelves'. Inside it:

* .../<encoded-name>.current
  Holds an ASCII-decimal number stating the latest shelf-version of the
  shelf <encoded-name>, followed by a newline character (LF).

* .../<encoded-name>.log
  Holds the 'revision' properties of the shelf, in svn_hash_write2() format
  terminated with "PROPS-END". Created when any revprop is set; need not
  exist.

* .../<encoded-name>-<version>.wc
  Directory holding a shelf-version as a real WC.


=== Shelving v2 ===

Released in Subversion 1.11.0, marked "experimental".

Each shelf has zero or more versions of the change, and exactly one set of
'revision' properties.

* .svn/experimental/shelves/v2
  This subdirectory holds all shelving metadata and data.
  It is created on demand, and never deleted.

* .svn/experimental/shelves/v2/<encoded-name>.current
  Holds an ASCII-decimal number stating the latest shelf-version of the
  shelf <encoded-name>, followed by a newline character (LF).

* .svn/experimental/shelves/v2/<encoded-name>.log
  Holds the 'revision' properties of the shelf, in svn_hash_write2() format
  terminated with "PROPS-END". Created when any revprop is set; need not
  exist.

* .svn/experimental/shelves/v2/<encoded-name>-<version>.d
  Directory holding the metadata and {base,working}{text,props} files for a
  shelf-version. For each shelved WC-relpath <P>:
  - <P>.meta : metadata, serialized in a shelf-v2-specific format
  - <P>.base : the base text (absent for a directory)
  - <P>.work : the working text (absent for a directory)
  - <P>.base-props : the base properties
  - <P>.work-props : the working properties

<encoded-name>: the shelf name as UTF-8, encoded byte-by-byte into
  two-hex-digit pairs, e.g. shelf name 'Az' is encoded as '417f'.

<version>: an ASCII-decimal number, starting at 1


=== Shelving v1 ===

Released in Subversion 1.10.0, marked "experimental".

Shelving only, no 'checkpoints' (versions). Each shelf has an optional log
message.

* .svn/shelves
  This subdirectory holds all shelving metadata and data.
  It is created on demand, and never deleted.

* .svn/shelves/<encoded-name>.patch
  The patch file representing one shelf, preceded by its log message.
  If a log message is not given, the empty string is stored instead. The
  log message is terminated in the same was as in the log message editor:
  a newline, then "--This line, and those below, will be ignored--". Then
  follows a blank line, a line "--This patch was generated by 'svn
  shelve'--", a blank line, then the patch.

<encoded-name>: the shelf name as UTF-8, encoded byte-by-byte into
  two-hex-digit pairs, e.g. shelf name 'Az' is encoded as '417f'.


