I was working on a bit of Java recently which I had cloned on both Windows and Linux (the code is intended to be built on Linux, but with my environment it's more convenient to run Eclipse on Windows). I'd made some changes and built a test jar under Windows, but now needed to try the build on Linux. So... commit my changes, run
hg servewhich starts a mini http server, and then on Linux run
hg pullpointing it at my Windows PC. Hey presto, my locally-committed changes are now on my Linux system as well as my Windows one, and I can push from either of those to the master repository without horribly confusing the other copy. With CVS or SVN I'd have had to either check in my changes (polluting the master repository with untested changes), or copy the files across resulting in my checkout losing synchronisation with the metadata.
Of course, then I wanted to get the history of a file with all tags, not just those tags that happened to be on changesets including changes to that file, and couldn't find a way to get that information from Mercurial. Status quo restored!