Login | Register
My pages Projects Community openCollabNet

Discussions > dev > [RFC] Add Shelve and Checkpoint UI

Project highlights: :. Download .: :. Support .: :. FAQ .: :. Translations .: :. Donate .: :. Report Bug .:

Discussion topic

Back to topic list

[RFC] Add Shelve and Checkpoint UI

Author julianfoad
Full name Julian Foad
Date 2017-08-24 07:10:03 PDT
Message Dear TortoiseSVN developers,

We are developing Shelving and Checkpointing features in Subversion core
[1]. This is a proposal to add UI to TSVN to support those features.

We wish to make these features available early. At present the core
features are being developed on branches [2]. As previously discussed, it
is probably appropriate to develop the TSVN UI on a branch.

These are entirely client-side features.

It is expected that the core library will provide all the required feature
functionality, so the implementation in TSVN will be entirely UI.

It is expected that the WC format will not change and that all the
functionality will be built on top of the existing WC format. The data
storage will be within new subdirectories in the WC's '.svn' directory, in
the form of patch files and/or embedded svn repositories.

Below is a draft of the UI design.

== Shelving ==

Shelving is closely equivalent to 'hg shelve' and 'bzr shelve', and a
subset of the capabilities of 'git stash'. It must work offline.

UI for Shelving involves:
  * user selects the whole or part of the WC;
  * user chooses a name or TSVN generates a name automatically;
  * user optionally supplies a description;
  * TSVN tells SVN to 'shelve': SVN saves a diff of the selection as a
patch file in the WC directory '.svn/shelves/' and reverts that diff
from the WC.

UI for Unshelving involves:
  * TSVN shows the list of shelved patches and user chooses one;
  * TSVN tells Subversion to 'unshelve': SVN applies the patch to the WC
and deletes the patch (if no conflicts);
  * TSVN presents any resulting patch conflicts as for 'svn patch'.

== Checkpointing ==

Checkpointing allows the user to save the WC state from time to time, and
roll back to a previous WC state. It must work offline.

UI for 'checkpoint save' involves:
  * user selects the whole or part of the WC;
  * user optionally supplies a description;
  * TSVN tells SVN to 'checkpoint save'

UI for 'checkpoint rollback' involves:
  * (?) user selects the whole or part of the WC;
  * TSVN shows list of checkpoints and user selects one;
  * TSVN tells SVN to 'checkpoint rollback'

Those are the basic checkpointing operations; others may be added.

Checkpointing design options are currently being explored, especially
regarding the WC base state. Saving a checkpoint may leave the WC base as
it is, or it may update the base like commit does so the WC shows as
unmodified. It may or may not save the WC base state and allow updating the
WC base between checkpoints. It may support checkpointing only when the WC
state is committable, or it may support saving an uncommittable state such
as unresolved conflicts.

== Integration into TortoiseSVN ==

The attached images suggest a basic starting point for the UI.

Shelving is conceptually so close to patching that 'Shelve' and 'Unshelve'
should be adjacent to or integrated with 'Create patch' and 'Apply patch'.
The UI could be modeled on the patching UI. The attached
'Shelve-Commit-Dialog-1.png' shows an alternative, modeled on the Commit
dialog to which it is also conceptually close.

Checkpoint rollback functionality might most logically be incorporated
inside the 'Revert' function. The Revert dialogue should be extended if any
checkpoints exist to offer a selection of which checkpoint to revert to.
'Checkpoint save' should then be adjacent to Revert.

We welcome your thoughts on how best to design the UI for these features.
We are willing to do the implementation work needed, and look forward to
working with you.

Please let us know if we should start by sending you patches against TSVN
trunk or if there is something else we need to do to get started.

- Julian Foad
- Matthew Theiss
- Jacek Materna

   [1] Shelving-Checkpointing Dev doc. (J Foad)

   [2] Branch URLs:

« Previous message in topic | 1 of 4 | Next message in topic »


Show all messages in topic

[RFC] Add Shelve and Checkpoint UI julianfoad Julian Foad 2017-08-24 07:10:03 PDT
     Re: [RFC] Add Shelve and Checkpoint UI steveking Stefan K√ľng 2017-08-25 12:19:05 PDT
         Re: [RFC] Add Shelve and Checkpoint UI stefanego Stefan Hett 2017-09-01 17:12:11 PDT
     Re: [RFC] Add Shelve and Checkpoint UI julianfoad Julian Foad 2017-08-28 14:21:13 PDT
Messages per page: