Как управлять коммерческой версией одного и того же проекта с открытым исходным кодом с помощью системы управления версиями?

Мы разрабатываем проект с открытым исходным кодом и используем Mercurial для управления исходным кодом. Репозиторий Mercurial для этого проекта является общедоступным (мы используем Bitbucket).

Теперь у нас есть клиент, для которого нам нужно настроить наше программное обеспечение с открытым исходным кодом. Эти настройки должны быть конфиденциальными, поэтому нам, вероятно, потребуется создать новый репозиторий Hg для этого клиента; этот новый репозиторий будет частным.

Но проблема в том, что нам нужно [время от времени] объединять изменения (например, новые функции или исправления ошибок) из открытого репозитория в наш частный репозиторий.

Как лучше всего этого добиться? Я читал, что можно объединить два или более репозитория Mercurial, но история будет потеряна. Также слияние могло быть болезненным из-за множества конфликтов. Что, если в будущем у нас появится еще несколько клиентов, как нам управлять их репозиториями? Должны ли мы использовать один репозиторий и несколько веток? Что, если две версии проекта начнут двигаться в разных направлениях, а два репозитория станут все более разными?

Поделитесь, пожалуйста, своим опытом по этому поводу.

Заранее спасибо!

16
задан Buttons840 4 January 2013 в 04:13
поделиться