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

How should shelving interact with checkpoints?

From: Julian Foad <julianfoad_at_apache.org>
Date: Fri, 25 Aug 2017 13:44:39 +0100

I have been thinking about, and written [1], the following:

How should shelving interact with checkpoints?

In other words, what do we expect to happen if we start working, make
some checkpoints, and then shelve "the work" to work on something else?
Do we usually want to shelve the whole series of checkpoints, or just
the latest (uncheckpointed) working change and start new work against
the latest checkpoint?

If the checkpointing design shows WC state relative to the latest
checkpoint (as in option 3), then shelving should:

  * Shelve the (uncheckpointed) working change, leaving all checkpoints
as they are.

This returns the WC to showing an unmodified state relative to the
latest checkpoint.

If the checkpointing design shows WC state relative to the original base
(as in option 1), and checkpoints exist, then shelving should:

  * Shelve the working change and restore the latest checkpoint.

In this case, since the working change is based on the original base,
the resulting patch includes the changes made in all the earlier
checkpoints. The effect is like making a more permanent kind of
checkpoint that is tagged with a name and will survive rollbacks.

Other possibilities that I thought about and rejected were:

  * Warn and/or require user input; then discard (squash) checkpoints
and shelve a single patch.

  * Save the whole series of (N) checkpoints and working state, e.g. as
'foo-1.patch' ... 'foo-N.patch', 'foo.patch'. In that case, unshelving
while some (M) checkpoints already exist would perhaps add 'foo-1.patch'
as checkpoint(M+1) ... 'foo-N.patch' as checkpoint(M+N), 'foo.patch' as
the new working state. But then what? Too messy.

That seems good to me. Any other thoughts?

- Julian

[1]
https://docs.google.com/document/d/1PVgw0BdPF7v67oxIK7B_Yjmr3p28ojabP5N1PfZTsHk/edit#heading=h.ilq1gee589ue
Received on 2017-08-25 14:44:44 CEST

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