You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Julian Foad <ju...@apache.org> on 2017/07/17 11:42:24 UTC
Checkpointing - is not Quilt
Initially I wrote that 'checkpointing' should allow committing the
result either all at once or as a corresponding series of commits.
Having thought more, I believe the use case for a series of commits
falls out of scope.
Definitions:
Quilt:
Preparing a series of patches that will be applied (perhaps
committed) sequentially in a given order.
Each patch represents a self-contained logical change, likely with
its own log message.
Later patches may depend on earlier ones.
Ability to jump to any patch in the series and modify it in the
context of the earlier patches having been applied and the later ones not.
After such a modification, updating (as in rebasing) the later
patches accordingly.
Ability to commit the series as a corresponding series of commits,
or all in one commit.
Checkpointing:
Saving intermediate, unfinished, working states during the
preparation of a single logical change.
The change will be committed as one revision when finished.
Changing a state that has been checkpointed may be accomplished
either by rolling back to an earlier state and then re-doing all
subsequent changes in the desired way, or by leaving that checkpoint in
place and making a further checkpoint after changing the working state
in the desired way.
Like an "undo stack", with or without "redo".
- Julian
Re: Checkpointing - is not Quilt
Posted by Julian Foad <ju...@apache.org>.
Branko Čibej wrote:
> In order to use checkpoints as a sort of local commit, you do have to be
> able to push a series of commits to the server. You'd distinguish
> explicit checkpoints (with log messages) and implicit/automatic
> checkpoints; only the explicit ones would constitute separate commits.
That would be lovely. It is beyond what I see as basic checkpointing
functionality (which is more like a local 'undo' mechanism while
composing one commit).
> In order to support that, you'd have to have a way to rebase the whole
> checkpoint stack onto current HEAD (or at least to a non-conflicting
> state). Ideally you'd also support operations such as checkpoint
> reordering, (local) squashing, removal, etc.
Yes. I'll aim to design in such a way as to make those kinds of things
possible in future extensions.
I like the idea of being able to have both explicit and
implicit/automatic/lightweight checkpoints and distinguish them. The
more I think about automatic checkpoints, the more I see this as
bringing to Subversion's WC the 'auto-save' and 'undo' features that
nearly all user-friendly editor applications offer. I can see a GUI
wanting to make frequent automatic checkpoints so that the user doesn't
have to remember to do so.
- Julian
Re: Checkpointing - is not Quilt
Posted by Branko Čibej <br...@apache.org>.
On 17.07.2017 13:42, Julian Foad wrote:
> Initially I wrote that 'checkpointing' should allow committing the
> result either all at once or as a corresponding series of commits.
> Having thought more, I believe the use case for a series of commits
> falls out of scope.
>
> Definitions:
>
> Quilt:
>
> Preparing a series of patches that will be applied (perhaps
> committed) sequentially in a given order.
> Each patch represents a self-contained logical change, likely with
> its own log message.
> Later patches may depend on earlier ones.
> Ability to jump to any patch in the series and modify it in the
> context of the earlier patches having been applied and the later ones
> not.
> After such a modification, updating (as in rebasing) the later
> patches accordingly.
> Ability to commit the series as a corresponding series of commits,
> or all in one commit.
>
> Checkpointing:
>
> Saving intermediate, unfinished, working states during the
> preparation of a single logical change.
> The change will be committed as one revision when finished.
> Changing a state that has been checkpointed may be accomplished
> either by rolling back to an earlier state and then re-doing all
> subsequent changes in the desired way, or by leaving that checkpoint
> in place and making a further checkpoint after changing the working
> state in the desired way.
> Like an "undo stack", with or without "redo".
In order to use checkpoints as a sort of local commit, you do have to be
able to push a series of commits to the server. You'd distinguish
explicit checkpoints (with log messages) and implicit/automatic
checkpoints; only the explicit ones would constitute separate commits.
In order to support that, you'd have to have a way to rebase the whole
checkpoint stack onto current HEAD (or at least to a non-conflicting
state). Ideally you'd also support operations such as checkpoint
reordering, (local) squashing, removal, etc.
-- Brane