I think if you look around for 'vendor branch' answers you'll find they cover your case too.
The basic jist is to make sure that any change you want to stay is the subset repository has only changesets from that subset as ancestors. Here's a crude picture:
subset:
[A]---[B]----[C]----[D]
superset1:
[A]---[B]----[C]----[D]---[E]---[F]
superset2:
[A]---[B]----[C]----[D]---[G]---[H]
With repositories like that any change you make in subset can be easily hg pull
ed into superset1 and/or superset2. If, for example, you add a new feature in subset your repos might now look like this:
subset:
[A]---[B]----[C]----[D]---[I]---[J]
superset1:
[A]---[B]----[C]----[D]---[E]---[F]
superset2:
[A]---[B]----[C]----[D]---[G]---[H]
and after pulling those into superset1 and superset2 you'd have:
subset:
[A]---[B]----[C]----[D]---[I]---[J]
superset1:
[A]---[B]----[C]----[D]---[E]---[F]
\
--[I]---[J]
superset2:
[A]---[B]----[C]----[D]---[G]---[H]
\
--[I]---[J]
and then you'd just hg merge
in superset1 and superset2 to get:
subset:
[A]---[B]----[C]----[D]---[I]---[J]
superset1:
[A]---[B]----[C]----[D]---[E]---[F]---[K]
\ /
--[I]---[J]--
superset2:
[A]---[B]----[C]----[D]---[G]---[H]---[L]
\ /
--[I]---[J]--
Moving changes from superset1 to superset2 or from either superset to the subset is much less clean, so make the change in the subset and pull/merge it into the supersets and you're good to go.