Re: Shelve & checkpoint - next steps
From: Julian Foad <julianfoad_at_apache.org>
Date: Mon, 14 May 2018 16:27:10 +0100
Here is a more comprehensive outline of next development steps for
I propose now switching completely from 'patch' storage to storing whole
To start with, we may well store a new copy of both base and working of
Functional improvements, in approximate priority order:
* overcome remaining 'patch' format limitations [1]
- 'mkdir', 'rmdir'
* proper merge
- 3-way merge
* make existing read-only 'svn' commands work on a shelf:
- svn status
Further functional improvements:
* integrate 'shelf' and 'changelist' concepts [2]:
- shelving converts a changelist into a 'shelf',
* let 'unshelve' update to the correct base or warn if base mismatch
To overcome remaining 'patch' format limitations:
* develop the whole-file storage format to support (for binary
- base as well as working version,
* switch to whole-file storage (base and working versions) for all
- when unshelving a text-mod in a non-binary file, and for the
* remove the now-unused support for storing a patch file
* develop the storage format to support:
* develop the storage format to support:
* send property changes through the existing property merge APIs
To implement proper merging:
* reconstruct the delta on demand as svn_diff_tree_processor_t
* make a merge-into-WC routine that can merge a given diff (via
* let 'unshelve' feed a text file's diff into that 'merge-into-WC';
* update the conflict handling to be able to refer to a shelf as
* might work better or be easier if we store a reference to the
To implement existing read-only 'svn' commands:
* implement a way to specify a shelf instead of a regular WC
- a special revision specifier like '-r SHELFNAME'
* for 'svn status':
- implement an API analogous to svn_wc_walk_status() that
* for 'svn export/cat/propget/proplist':
- implement some kind of API for reading tree data from shelf;
* for 'svn diff':
- implement an svn_diff_tree_processor_t driver API on the shelf;
Take advantage of the new interfaces and routines developed here, to
* improve the 'status' API to be a better fit for both shelves and
* implement the new API for reading WC base and working trees, on
* rewrite existing 'update' and 'merge' to use the new
- Julian
[2]
|
This is an archived mail posted to the Subversion Dev mailing list.
This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.