¿Cómo puedo sincronizar versiones cerradas y abiertas de la misma herramienta con Mercurial?

Tengo una herramienta a la que me gustaría liberar la fuente. Sin embargo, algunas funciones no pueden lanzarse como partes de código abierto debido a restricciones de licencia. En general, me gustaría desarrollar la herramienta utilizando la versión de código abierto del código, pero en cada versión necesito transferir las pocas características de la versión cerrada a la compilation de un cliente en particular.

No puedo usar una twig normal para esto, porque eso pondría los bits de código cerrado en el mismo repository donde quisiera compartir el código abierto (en este caso, Bitbucket).

¿Hay algo que pueda hacer o estoy atascado moviendo manualmente la fuente?

¿Puede segregar los bits secretos en complementos / complementos (algo que se puede habilitar mediante la configuration o la configuration en time de ejecución) y dividir la base de código en dos repositorys, uno para la edición de código abierto (y también la base para la edición de código cerrado) y uno para las adiciones de código cerrado?

De esta forma, la compilation de código cerrado aún usaría el mismo repository, pero agregaría algunas cosas adicionales de la segunda base de código secreta. El process de compilation sería similar al de una biblioteca externa en sentido ascendente.

Tendrás 2 repositorys, uno que contenga todo el código cerrado y otro que contenga todos los abiertos.

En su repository de fuente cerrada, debe get todos los cambios desde el repository de fuente abierta y fusionarse con la fuente cerrada.

Esto debería funcionar sin problemas a less que tengas que implementar algunas partes diferentes en los dos, entonces tendrás conflictos de combinación en esas áreas cuando te combines en tus cambios.