Let's say I have a local and a remote Mercurial repository. Now, I start working on a feature. I work on it, and when I think it's done, I commit the changeset. Testing it a bit more, I find that I could further improve this feature by tweaking something in the code. I make the change and commit. 20 minutes later, I find there's a bug in this new feature, so I fix it and commit that too.
I now have 3 changesets that I would really like to push to the remote repository as one changeset with message "Implementing feature X", for instance.
How can I do this without much hassle? I believe I could do it with patches, but it seems like a lot of work.
The histedit extension is exactly what you are looking for.
hg histedit -o
or
hg histedit --outgoing
will bring up a list of the outgoing changesets. From the list you can
histedit will prompt you for the new commit message of the folded changesets which it defaults to the two messages with "\n***\n" separating them.
You can also get similar results using the mq extension, but it is a lot more difficult.
You can also use the collapse extension to just do folding, but it doesn't provide as nice a UI and doesn't provide a way to edit the resulting commit message. Editing the resulting commit message also allows for cleaning up the final message, which is something I always end up utilizing.