shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
[ original upstream message ]
$Id$
keyword extension for Mercurial SCM
===================================
CAVEAT: Please use the keyword extension distributed with
Mercurial > 1.0.2!
For Mercurial 0.9.2 to 1.0.2 install the 0.9.2compat branch.
The default and stable branches are meant for development.
install
-------
Run "python setup.py install".
See also "pyton setup.py --help".
Then add the line:
[extensions]
keyword = /path/to/hgkw/keyword.py
to your hgrc, where /path/to/ is somewhere in your $PYTHONPATH.
first steps and online help
---------------------------
$ hg help keyword
$ hg kwdemo
testing
-------
$ cd tests
$ ./run-tests.py --with-hg=/path/to/hg