Использование Mercurial на расходящихся ветках - PullRequest
3 голосов
/ 27 октября 2010

Что такое хороший рабочий процесс для использования Mercurial с двумя долго работающими ветвями, которые немного расходятся (т.е. я никогда не собираюсь полностью объединять их обратно все вместе)?

В моем случае это программное обеспечение CMS, которое было настроено по-разному для двух разные веб-сайты. Я начал с projectA, и, как только он заработал, клонировал его в projectB и внес дополнительные изменения в A и B, чтобы настроить их. Теперь я хочу разработать некоторые функции, которые отображаются как в A, так и в B, без объединения настроек, специфичных для сайта. Как?

hg push будет толкать все, так что не будет работать
Трансплантат, кажется, дает мне разные хеш-коды изменений, что меня беспокоит

Мне кажется, что хранилища должны быть настроены иначе, но я не конечно как.

Ответы [ 4 ]

3 голосов
/ 27 октября 2010

Как комментарии Thilo , часть common будет лучше всего разработана (и опубликована в A и B) в качестве третьего репо, объявленного как SubRepo .

Таким образом, вы уважаете первые два репо, которые являются независимыми (одна эволюция на A не всегда означает эволюцию на B), и вы можете развить общую часть в подпункте C.

0 голосов
/ 27 октября 2010

Как указывалось выше, субрепо, вероятно, является лучшим вариантом. Другой альтернативой может быть создание третьей ветви с общей работой и слияние этой ветви с projectA и projectB (но никогда не возвращайтесь к общей ветви).

У этой альтернативы больше шансов на несчастные случаи (неправильное слияние), но вы можете обнаружить, что ее проще настроить и быстро приступить к работе.

0 голосов
/ 27 октября 2010

Вы можете использовать hg push для объединения изменений, но вам не обязательно объединять все наборы изменений в транк.Просто возьмите те, которые вы хотите.

0 голосов
/ 27 октября 2010

Решение для Mercurial может заключаться в том, что вы можете поместить различные области в файлы, которые могут быть в .hgignore, но тогда они не будут версионированы, так что это может быть не очень хорошо.способ состоит в том, чтобы просто использовать 1 репо и установить глобальный флаг, и использовать шаблон A или B в зависимости от флага и / или включать другой исходный файл кода в зависимости от флага.Если разница невелика, можно использовать if-then-else внутри того же файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...