Как мне поддерживать несколько линий развития между клиентами в Mercurial? - PullRequest
0 голосов
/ 01 декабря 2009

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

Изначально существовал стандартный набор страниц, из которых все остальные настройки клиентов были получены в прошлом.

Недавно место, где я работаю, решило использовать Mercurial для контроля версий. Они также решили переработать стандартный набор страниц для нашей электронной коммерции и сделать их основной / базовой линией разработки.

При этом существуют существующие настройки для каждого из наших клиентов, которые были сделаны до базового набора страниц, которые еще не были введены в систему контроля версий (hg).

Обзор

Каков наилучший способ объединить изменения из базовой линии разработки в отдельную линию разработки для каждого из наших клиентов, при этом мы сохраняем существующие настройки для каждого клиента?

Ответы [ 3 ]

1 голос
/ 01 декабря 2009

Каков наилучший способ объединить изменения из базовой линии разработки в отдельную линию разработки для каждого из наших клиентов, при этом мы сохраняем существующие настройки для каждого клиента?

как и в любом другом сценарии ветвления. е. g.:

alice ~/wc/cust-XYZ % hg pull -u $xyz
alice ~/wc/cust-XYZ % hg ci
alice ~/wc/cust-XYZ % hg ci
alice ~/wc/cust-XYZ % hg ci
alice ~/wc/cust-XYZ % hg pull $mainline
alice ~/wc/cust-XYZ % hg merge
alice ~/wc/cust-XYZ % hg ci
alice ~/wc/cust-XYZ % hg push $xyz
0 голосов
/ 04 декабря 2009

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

0 голосов
/ 01 декабря 2009

В зависимости от того, насколько вам нужен каждый проект, самым простым способом может быть создание отдельного дерева шаблонов для каждого клиента, которое имеет приоритет над базовым набором. Как в

base/template1.html

customer/template1.html

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

Вы можете отслеживать изменения каждого клиента в виде набора патчей, используя mq (Mercurial queues). Может быть немного сложно объединить наборы патчей.

Вы можете сделать то же самое с rebase, потенциально более элегантным, чем mq, но я не уверен, как поделиться наборами ребаз.

Или вы можете просто оставить базовый репозиторий и отделить репозитории от каждого клиента, которые никогда не возвращаются в базу.

В каждом случае ваша жизнь (слияние) будет намного проще, если вы организуете свой проект так, чтобы настройки для каждого клиента были ограничены, чтобы они с меньшей вероятностью конфликтовали с изменениями в базовом продукте.

...