Words, I missed your PS where you don't like having multiple named branches in the same repo and that you prefer individual clones .. sorry for that.
I also have several large C ++ projects, and the workflow for working with clones doesn't work very well for me. Firstly, I had to close the Vim session and then reopen (many of the same) files as soon as I created the clone. Secondly, as you said, a lot of code needs to be recompiled without need. Thirdly, I have to keep track of where I pushed and pulled out - it becomes confusing when you start a new function, and then get distracted by a new one. Before you know this, you have many clones and are not sure which ones you need to drop to your primary.
You definitely do not want to use the named branches (as I am sure you know) to handle this, since they are pretty constant.
You need bookmarks: https://www.mercurial-scm.org/wiki/BookmarksExtension
Bookmarks allow you to create light (and otherwise anonymous) branches for each function, simplifying the names of goals in your repo. Typically, these chapters do not have a title, and you will need to look at the output of "hg log" or use some kind of graphical tool to find the version numbers for the tip of your branch. With bookmarks, you can call them descriptive names, such as "my-cool-feature" or "bugfix-392."
If you like the idea of โโbookmarks, I also recommend my own extension called "tasks": http://bitbucket.org/alu/hgtasks . This extension works like bookmarks, but adds a few more features. It allows you to create functional branches (now called tasks) and suppress the repulsion of incomplete tasks. This is useful when you have several function branches at once. You may not be ready to click your "my-cool-feature" task, but "bugfix-392" is ready to go. Because tasks track a set of change sets (and not just one set of tips), there are some things you can do with tasks that you cannot bookmark. The following is an example workflow: http://x.zpuppet.org/2009/03/09/mercurial-tasks-extension/ . Strike>
source share