I recently started using Mercurial and like the way I have VCS protection for my individual development without checking it in to the central repository, then I push to the central repo when I have something ready for the rest of the team.
When I "hg commit" I write a commit message relevant to the addition since the last time I committed. I may have 5 or so local commits before I'm ready to push stuff to central. When I do push, if I don't specify a revision, all of my local commits and their messages get added to the central repository, but I don't want to clutter the central log with all my local smalls steps. When I push and specify the local revision, I think only that revision and its commit message get pushed, right?
The problem is, I want to push with a commit message that summarizes all of my local "offline" work, because that's what I'm really adding. However, the commit message that gets pushed is whatever I most recently wrote. Say I'm working on feature A and I have five local commits for it; "Added A.1" "Added A.2" "Cleaned up code in foo.cpp" and so on, ending with "Added A.4." What I want to log to the central repository is "Added A, cleaned up foo.cpp" but if I push that last revision it just sees "Added A.4." Now, when there have been updates to central I need to merge in locally before I push, my local commit message is "Merged in tip". Clearly that's not a good commit message to push back.
What's a good practice here? I'm not aware of any mechanism to change an existing commit message, or to push with a new commit message. I don't want to make a trivial change to my local repo simply to enter a new commit message before changing; that's just silly. I must be missing something because this seems basic. Or am I not thinking about mercurial the right way?