В настоящее время я использую Mercurial вместе с расширением Guestrepo для управления и версии различных компонентов проекта. Я пришел к довольно стабильному документообороту для управления различными версиями компонентов.Mercurial управляет небольшими вариациями/конфигурациями одного и того же проекта
Однако я не могу придумать эффективное решение, когда дело доходит до версий тонких вариаций компонента. Это, например, несколько другой драйвер встроенного устройства (например, скорость последовательного порта) или графический интерфейс, который написан на английском языке вместо немецкого.
Я не думаю, что укладка их в ветку Release/Stable - хороший рабочий процесс, поскольку распространение различных конфигураций (английский, испанский, китайский, ...) может привести к серьезному и бессмысленному раздуванию выпуска филиал.
С другой стороны, создание отдельной ветви Release для каждого приведет меня ко многим, многим ветвям, что не является лучшим решением IMHO.
Создание отдельных репозиториев для каждой из конфигураций будет представлять собой довольно утомительную задачу всякий раз, когда должны быть сделаны структурные изменения, поскольку все репозиции необходимо будет обновить с помощью этих изменений.
Любая идея по этому вопросу?
спасибо.
Как следует @EldadAK, создавая репозиторий для каждой конфигурации и импорт основных функций из другого РЕПО кажется хорошей идеей.
Тем не менее, я до сих пор не могу понять, как организовать «те же, но несколько разные» компоненты, которые отличаются некоторыми тонкими функциями, но разделяют их ядро.
Это проблема с архитектурой кода? Должны ли компоненты быть реорганизованы таким образом, чтобы основное ядро и разные функции находились в разных компонентах, которые связаны с использованием пользовательских сборок для каждой конфигурации?
Лично я бы организовал свой проект, чтобы все его варианты были в одной ветви в одном репозитории. Я бы организовал локализацию, чтобы они находились внутри подпапок внутри этой основной папки проекта, и я бы не поддерживал ветки или репозитории для разных вариантов. Конфигурации вариантов должны быть параметрами конфигурации в файлах конфигурации. ([UI] в файле ini имеет язык = en-US, [serialPort] baudRate - это еще один раздел в ini-файле) –