I committed an initial prototype for shelving on the "shelve-checkpoint" branch.

Here is the help output:
[[[
$ svn shelve --help
shelve: Shelve changes.
usage: 1. shelve NAME PATH...
       2. shelve --delete NAME
       3. shelve --list

  1. Shelve as NAME the local changes in the given PATHs.
  2. Delete the shelved patch NAME.
  3. List shelved patches.
[...]

$ svn unshelve --help
unshelve: Unshelve changes.
usage: unshelve [--keep] NAME

]]]

Here is an example session:
[[[
$ # create and commit some files

$ mkdir doc; echo hello > doc/hello.txt; echo config > config

$ svn add --force .; svn ci -q -m ""
A         config
A         doc
A         doc/hello.txt

$ # start making some changes to docs

$ echo new > doc/new.txt; svn add doc/new.txt
A         doc/new.txt

$ echo more >> config

$ svn st
M       config
A       doc/new.txt

$ # shelve these documentation changes

$ svn shelve docs .
U         config
D         doc/new.txt
shelved 'docs'

$ svn st

$ svn shelve --list
docs.patch

$ # work on a quick fix and commit it

$ echo Hello > doc/hello.txt

$ svn ci -q -m "Fix capitalization."

$ # unshelve to continue work on docs

$ svn unshelve docs
U         config
A         doc/new.txt
unshelved 'docs'

$ svn st
M       config
A       doc/new.txt

$ svn shelve --list

]]]

If you have a chance to try it yourself, I'd love to hear your first impressions.

- Julian


References:
    [1] Shelving-Checkpointing Dev doc. (J Foad)
https://docs.google.com/document/d/1PVgw0BdPF7v67oxIK7B_Yjmr3p28ojabP5N1PfZTsHk/edit#

Reply via email to