First, I have a very large cvs repository and I'm trying to switch things over to mercurial. The cvs repository consists of several directories, sort of like the situation in this question. However, each subdirectory is not an entire independent project. Each project uses a subset of the whole but their intersections are not empty.
Here's an example to clarify:
/cvsroot .../core .../feature-1 .../feature-2
Project 1 uses core and feature-1; project 2 uses core and feature-2. I don't want people who work on project 2 to have the feature-1 directory in their working copies, because it's actually a set of about 30 directories and a not insignificant amount of space.
Is there a way to deal with this easily (or, alternatively, well) with mercurial? I thought about using a separate repository for the intersection, but that's suboptimal. It means doing an extra pull and extra updates and probably writing a bunch of scripts to manage it.
My other alternative was replicating the intersection in each. That's no good though because it's likely to cause the common code to fork, since different people work on different parts of it.