1

В настоящее время я использую Mercurial вместе с расширением Guestrepo для управления и версии различных компонентов проекта. Я пришел к довольно стабильному документообороту для управления различными версиями компонентов.Mercurial управляет небольшими вариациями/конфигурациями одного и того же проекта

Однако я не могу придумать эффективное решение, когда дело доходит до версий тонких вариаций компонента. Это, например, несколько другой драйвер встроенного устройства (например, скорость последовательного порта) или графический интерфейс, который написан на английском языке вместо немецкого.

Я не думаю, что укладка их в ветку Release/Stable - хороший рабочий процесс, поскольку распространение различных конфигураций (английский, испанский, китайский, ...) может привести к серьезному и бессмысленному раздуванию выпуска филиал.

С другой стороны, создание отдельной ветви Release для каждого приведет меня ко многим, многим ветвям, что не является лучшим решением IMHO.

Создание отдельных репозиториев для каждой из конфигураций будет представлять собой довольно утомительную задачу всякий раз, когда должны быть сделаны структурные изменения, поскольку все репозиции необходимо будет обновить с помощью этих изменений.

Любая идея по этому вопросу?

спасибо.


Как следует @EldadAK, создавая репозиторий для каждой конфигурации и импорт основных функций из другого РЕПО кажется хорошей идеей.

Тем не менее, я до сих пор не могу понять, как организовать «те же, но несколько разные» компоненты, которые отличаются некоторыми тонкими функциями, но разделяют их ядро.

Это проблема с архитектурой кода? Должны ли компоненты быть реорганизованы таким образом, чтобы основное ядро ​​и разные функции находились в разных компонентах, которые связаны с использованием пользовательских сборок для каждой конфигурации?

+1

Лично я бы организовал свой проект, чтобы все его варианты были в одной ветви в одном репозитории. Я бы организовал локализацию, чтобы они находились внутри подпапок внутри этой основной папки проекта, и я бы не поддерживал ветки или репозитории для разных вариантов. Конфигурации вариантов должны быть параметрами конфигурации в файлах конфигурации. ([UI] в файле ini имеет язык = en-US, [serialPort] baudRate - это еще один раздел в ini-файле) –

ответ

0

ИМХО, вы должны сохранить все изменения в своей основной ветке. Управление всеми ветвями или даже несколькими хранилищами не является масштабируемым и в конечном итоге выходит из-под контроля.

Я не думаю, что вы должны заботиться о размере своей ветви освобождения. Сохраняя все это вместе, вы всегда будете знать, где вы находитесь, что включено в выпуск и когда вам действительно нужно разветвляться, все изменения, накопленные к этому моменту.

Это мое личное мнение, что вы должны попытаться сохранить его простым в управлении ищет много доработок и лет вперед ...

Примечание - Руководители проектов, как правило, думать о том, на следующей неделе. Вам нужно подумать о следующем году ...

Надеюсь, это поможет.

+0

Привет, спасибо за ответ. Проблема в том, что, например, я мог придумать английскую и немецкую версии (rev 9 и 10), а теперь нужно обновить драйвер, который находится на обеих версиях. Это неизбежно требует ветвления. – Manex

+1

В случае с языком я бы использовал их как ресурс, чтобы они могли жить односторонне и настраиваться по конфигурации. Если у вас есть отдельная ветка для каждого языка, я предлагаю вам сохранить основные функции в одном репозитории и настройках (язык, ui и т. Д.) В специализированных репозиториях проекта/усилий, которые импортируют основные артефакты. –

0

эффективное решение, когда речь идет о версиях тонкие изменения компонента

Пока я не вижу каких-либо серьезных недостатков, с использованием названных ветвей в один репо, вы можете использовать другой ("по умолчанию "де-факто) решение для управления конфигурацией внутри Mercurial: MQ

Вы только немного принять рабочий процесс (такое же количество ветвей, такое же количество сделок РЕПО) в MQ

Смежные вопросы