While working on a new feature I arrive at a point where it roughly works, but is still not at a point where I want to create a changeset. I would however create a "restore point" or a "snapsnot" so I can come back to this roughly working version of my codebase. In TFS I would create a shelve set.
In mercurial, shelve sets behave different: As soon as I move a file into a shelf, the file reverts to the state of the last changeset. So for my purpose of creating a snapshot and continue working, this behavior makes shelving not a solution.
How can I snapshot my work and continue with the files as they are?
I know there are many questions about shelving in mercurial here, but I could not find an answer to this question in them.
Comment on the helpful answers by @Mathiasdm and @Gill Bates
For now I go with commit --amend, which is also available in TortoisHG: the commit button can be converted to an amend button.
Ammend adds the changes to the previous commit instead of creating a new changeset. So
- first I create a commit with the rough version and then
- improve on it by ammending it.
"hg shelve && hg unshelve --keep" and the mq extension are nice alternatives.
One command that is particularly suited for this is:
It allows you to create a commit and keep improving it (amending it). Every time you do 'hg commit --amend', all additional changes in the working directory are added to it.
I know this does not sound 'shelve-like', but it sounds like what you need is actually not really a shelve.