Лучшие практики для проекта Функция подмодулей с Mercurial и Eclipse?
-
27-09-2019 - |
Вопрос
У меня есть пара проектов муравей для нескольких разных клиентов; Структура каталогов У меня есть для моих проектов, выглядит так:
L___standard_workspace
L___.hg
L___validation_commons-sub-proj <- JS Library/Module
| L___java
| | L___jar
| L___old_stuff
| L___src
| | L___css
| | L___js
| | L___validation_commons
| L___src-test
| L___js
L___v_file_attachment-sub-proj <- JS Library/Module
| L___java
| | L___jar
| L___src
| | L___css
| | L___js
| L___src-test
| L___js
L___z_business_logic-sub-proj <- JS Library/Module
| L___java
| | L___jar
| L___src
| L___css
| L___js
L____master-proj <- Master web-deployment module where js libraries are compiled to.
L___docs
L___java
| L___jar
| L___src
| L___AntTasks
| L___build
| | L___classes
| | L___com
| | L___company
| L___dist
| L___nbproject
| | L___private
| L___src
| L___com
| L___company
L___remoteConfig
L___src
| L___css
| | L___blueprint
| | | L___plugins
| | | | L___buttons
| | | | | L___icons
| | | | L___fancy-type
| | | | L___link-icons
| | | | | L___icons
| | | | L___rtl
| | | L___src
| | L___jsmvc
| L___img
| | L___background-shadows
| | L___banners
| | L___menu
| L___js
| | L___approve
| | L___cart
| | L___confirm
| | L___history
| | L___jsmvc
| | L___mixed
| | L___office
| L___stylesheets
| L___swf
L___src-standard
В рамках рабочей копии модули компилируют подпроект в один файл JavaScript, который находится в каталоге JavaScript ведущего проекта.
Например, каталоги:
validation_commons-sub-proj
v_file_attachment-sub-proj
z_business_logic-sub-proj
... Все объединены и министерны (как сорежаются) в другое имя файла JavaScript в _master-proj/js
каталог; и на последнем шаге _master-proj
составлен для развертывания на сервере.
Сейчас в отношении того, как я хотел бы установить это с HG, что я хотел бы сделать, это сделать клонировать главный проект и его подпроекты из своих собственных репозиториев базовых линий в рабочее копию клиента Так что могут быть добавлены модули (используя HG) к рабочей копии конкретного клиента.
Дополнительно, однако, когда я делаю некоторые изменения в / исправить ошибки в одном рабочей копии клиента, я хотел бы иметь возможность необязательно подталкивать исправления / ошибки обратно в основной репозиторий Master Project / Sub-Project, для целей в конечном итоге потянув изменения / исправления в рабочие копии других клиентов, которые могут содержать те же ошибки, которые необходимо исправить.
Таким образом, я смогу использовать те же исправления ошибок в разных клиентах.
Однако ... Я не уверен, что лучше всего сделать это, используя HG и Eclipse.
я Читайте здесь что вы можете использовать HG Преобразовать расширение разделить подкаталог в отдельный проект, используя --filemap
вариант.
Тем не менее, я все еще немного запутался, если бы было бы лучше использовать Преобразовать расширение Или если бы было бы лучше просто долить каждую из модулей в своем собственном репозитории и проверять их в одно рабочее пространство для каждого клиента.
Решение
Да, это выглядит как субрепос это то, что вы ищете, но я думаю, что, возможно, это правильный ответ на неправильный вопрос, и я настоятельно подозреваю, что вы столкнулись с похожим Вопросы, которые возникают при использовании SVN: внешние
Вместо этого я бы порекомендовал вам «опубликовать» ваши комбинированные и минимурированные файлы JS к репозиторий артефакта и использовать менеджер зависимости, такого как Плющ Чтобы потянуть конкретные версии ваших артефактов в ваш главный проект. Этот подход дает вам гораздо больший контроль над версиями подпроекта, использует ваш главный проект.
Если вам нужно сделать исправления ошибок в подпроект для конкретного клиента, вы можете просто сделать исправления на главной линии для этого подпроекта, опубликовать новую версию (в идеале через Автоматизированный сборщик сборки) И обновите свой основной проект, чтобы использовать новую версию. О, вы хотели проверить новую версию с их главным проектом перед публикацией? В этом случае, прежде чем подтолкнуть ваше исправление, комбинируйте и министрируйте свой подпроект локально, опубликуете его Местный репозиторий И у каждого капитального проекта клиента забрать эту версию для вашего тестирования.