== 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 '.shelves'. Inside it: * .../.current Holds an ASCII-decimal number stating the latest shelf-version of the shelf , followed by a newline character (LF). * .../.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. * .../-.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/.current Holds an ASCII-decimal number stating the latest shelf-version of the shelf , followed by a newline character (LF). * .svn/experimental/shelves/v2/.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/-.d Directory holding the metadata and {base,working}{text,props} files for a shelf-version. For each shelved WC-relpath

: -

.meta : metadata, serialized in a shelf-v2-specific format -

.base : the base text (absent for a directory) -

.work : the working text (absent for a directory) -

.base-props : the base properties -

.work-props : the working properties : the shelf name as UTF-8, encoded byte-by-byte into two-hex-digit pairs, e.g. shelf name 'Az' is encoded as '417f'. : 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/.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. : the shelf name as UTF-8, encoded byte-by-byte into two-hex-digit pairs, e.g. shelf name 'Az' is encoded as '417f'.