Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

operationCLI syntax examplerecipe
shelve and revertsvn shelve X [PATH...]

assert(any PATH is modified)

patch-save(X, PATH...)  # creates a new version

patch-unapply(X)

save new version ('checkpoint')

svn shelf-save X [PATH...]

assert(any PATH is modified)

patch-save(X, PATH...)

restore X [N]

unshelve X

svn shelf-restore unshelve X [N]

svn unshelve X

assert(not any patch-get-paths(X) is modified)  # or warn or allow override

patch-apply(X, N)

patch-delete-versions-newer-than-N(X, N)

export to patchsvn shelf-diff X N# export version N of shelf X as a patch
delete shelfsvn shelf-drop X

patch-delete-all-versions(X)

list shelves

svn shelf-list

svn shelves

list-all-shelves()
list shelf versionssvn shelf-log X

list-shelf-versions(X)

...

These possible extensions are not supported initially.

  • remember the order; 'unshelve' takes newest patch by default

  • once the base state is recorded, warn or otherwise try to avoid accidentally unshelving to a different branch or unrelated path

  • allow showing a shelf's content -- like 'svn log [-v] [--diff]', 'svn status', 'svn diff [--summarize]'

  • shelve: if no name given, automatically generate a name (so more like 'git stash')

  • use shelf's log message when committing

    • see the "Commit Log Message" discussion section belowabove

  • consider allowing restricting paths on 'apply' commandshandle conflicts better, using a proper merge rather than patching

  • when checkpointing, warn if PATH... excludes any paths that were in the previous version?

  • consider allowing restricting paths on 'apply' commands.

  • once the base state is recorded: warn or otherwise try to avoid accidentally unshelving to a different branch or unrelated path[with changelists] path spec would be implied by changelist; any explicitly specified paths could be added to the changelist

Roll Forward, as in Undo/Redo

...