Лучшие практики для проекта Функция подмодулей с Mercurial и Eclipse?

StackOverflow https://stackoverflow.com/questions/2851945

Вопрос

У меня есть пара проектов муравей для нескольких разных клиентов; Структура каталогов У меня есть для моих проектов, выглядит так:

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 к репозиторий артефакта и использовать менеджер зависимости, такого как Плющ Чтобы потянуть конкретные версии ваших артефактов в ваш главный проект. Этот подход дает вам гораздо больший контроль над версиями подпроекта, использует ваш главный проект.

Если вам нужно сделать исправления ошибок в подпроект для конкретного клиента, вы можете просто сделать исправления на главной линии для этого подпроекта, опубликовать новую версию (в идеале через Автоматизированный сборщик сборки) И обновите свой основной проект, чтобы использовать новую версию. О, вы хотели проверить новую версию с их главным проектом перед публикацией? В этом случае, прежде чем подтолкнуть ваше исправление, комбинируйте и министрируйте свой подпроект локально, опубликуете его Местный репозиторий И у каждого капитального проекта клиента забрать эту версию для вашего тестирования.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top