我认为,如果您四处寻找“供应商分支”的答案,您会发现它们也涵盖了您的情况。
基本要点是确保您想要保留的任何更改是子集存储库仅 具有来自该子集的更改集作为祖先。这是一张粗略的图片:
subset:
[A]---[B]----[C]----[D]
superset1:
[A]---[B]----[C]----[D]---[E]---[F]
superset2:
[A]---[B]----[C]----[D]---[G]---[H]
使用这样的存储库,您在 subset 中所做的任何更改都可以轻松地hg pulled 到 superset1 和/或 superset2 中。例如,如果您在子集中添加新功能,您的存储库现在可能如下所示:
subset:
[A]---[B]----[C]----[D]---[I]---[J]
superset1:
[A]---[B]----[C]----[D]---[E]---[F]
superset2:
[A]---[B]----[C]----[D]---[G]---[H]
在将它们拉入 superset1 和 superset2 之后,您将拥有:
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]
然后你只需 hg merge 在 superset1 和 superset2 中得到:
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]--
将更改从超集 1 移动到超集 2 或从任一超集移动到子集不太干净,因此在子集中进行更改并将其拉入/合并到超集中,一切顺利。