[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

[RFC] Add Shelve and Checkpoint UI

From: Julian Foad <julian_at_assembla.com>
Date: Thu, 24 Aug 2017 15:10:34 +0100

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:


To unsubscribe from this discussion, e-mail: [dev-unsubscribe_at_tortoisesvn.tigris.org].

Checkpoint.PNG Shelve-Commit-Dialog-1.png TortoiseMenu-2.png
Received on 2017-08-24 17:12:02 CEST

This is an archived mail posted to the TortoiseSVN Dev mailing list.