Скажем, я создаю набор продуктов, которые разделяют большую часть своего кода, но не весь его (например: приложение с несколькими внешними интерфейсами: командная строка, Windows / MAC / Linux GUI, мобильный (минимальный) GUI, веб-интерфейс и т. д.)
Кроме того, допустим, что общий код не может быть легко разделен и «библиотекарирован».
Я планирую использовать именованные ветви Mercurial для различных продуктов (например, ветки: CLI, Windows, MAC, Linux, Mobile, Web) или флаги компиляции в коде (например, #if (FRONT_END == CLI) #elif (FRONT_END == WEB) ...
).
Я не удовлетворен ни одним из подходов. вот мои обиды:
названных веток:
- если я изменяю часть общего кода, мне нужно объединить его со всеми ветками.
есть ли команда hg, чтобы сделать это (полу) автоматически?
- Нелегко / быстро увидеть, как конкретная функция реализована во всех ветвях (визуализировать различия в одной области кода)
флаги компиляции:
- кодовый беспорядок
- нет неявной истории изменений ветвей. необходимо сделать это вручную (зафиксировать с сообщением о том, какие продукты затронуты)
Можете ли вы предложить:
- способы смягчить мои сомнения?
- другая точка зрения
- элегантные способы объединить 2 подхода
1036 * спасибо *