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#