Синхронизация подпунктов на центральном сервере

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

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

Давайте разберемся с основами. Допустим, у меня есть удаленная "благословенная" коллекция репозиториев.

http://acme.com/BlessedRepos/ProjA
                            /LibA
                            /LibB

Так что я делаю клон /ProjA в C:\ProjA и клонировать /LibA в C:\ProjA\LibA а также /LibB в C:\ProjA\LibB, Я создаю свой .hgsub файл с

LibA = http://acme.com/BlessedRepos/LibA
LibB = http://acme.com/BlessedRepos/LibB

Я совершаю все. Я могу затем подтолкнуть ProjA и все хорошо.

Так что теперь кто-то в моей команде может пойти клонировать /PrjoA в C:\dev\ProjA и это сбьет LibA а также LibB тоже как подпункты. Этот человек может легко толкать / вытягивать из "благословенного репо", как и я. Так хорошо до сих пор.

Теперь я говорю: "Хорошо, команда ProjA, перестаньте настаивать на благословенном репо, это я должен сделать после обзора вашей работы. Начиная с сегодняшнего дня, я хочу, чтобы вы отправили свои изменения в удаленные репозитории ProjA dev и ProjA QA, расположенные по адресу:

http://acme.com/Dev/ProjA
http://acme.com/QA/ProjA

Это где мы останавливаемся. Пытаясь подтолкнуть к http://acme.com/Dev/ProjA будет только толкать /ProjA, в то время как /ProjA/LibA а также /ProjA/LibB получить обратно в исходное место в благословенном репо, а не в нужное место http://acme.com/Dev/ProjA,

Теперь я мог бы настроить .hgsub подать как LibA = ../LibA, Сначала это сработало бы, но если бы я делал клон ProjA из блаженного репо не получается LibA или же LibBЯ верю, потому что он ожидает найти локальные репозитории LibA а также LibB как братья и сестры ProjA репо я клонирую. Что я имею в виду, если я клонирую http://acme.com/BlessedRepos/ProjA в C:\Test\ProjA он потерпит неудачу, потому что он ожидает найти существующее хранилище в C:\Test\LibA,

Я мог бы также настроить мой Hgsub как LibA = LibA, Но сделать это не удается, когда вы пытаетесь подтолкнуть к благословенному репо как LibA не является вложенным из ProjA в благословенном пространстве. Я мог бы создать их, но тогда я никогда не отступлю http://acme.com/BlessedRepos/LibA, только для того, чтобы http://acme.com/BlessedRepos/ProjA/LibA, а затем кажется, что победил цель подпункта для начала.

Я почти уверен, что мой первый метод мог бы работать, если бы у меня также был какой-нибудь скрипт, который я бы запустил, который прошел бы и изменил все значения в .hgsub файл из "благословенных" удаленных мест в места "dev" и "QA", но это кажется далеко не идеальным.

Так. Если есть кто-то, кто действительно задирается с этим, не могли бы вы объяснить мне, где я ошибся, или как я мог добиться своего первоначального рабочего процесса, используя подпункты, или, возможно, просто подтвердить, что я иду за чем-то, что не действительно подходит для подпунктов. Если это помогает понять ситуацию, у нас есть что-то вроде 15-20 "продуктов / решений" и 50 "общих" проектов. Любой из 15-20 продуктов может использовать N из 50 общих проектов в своем решении.

1 ответ

Решение

Ключевая часть, которую вам не хватает, это то, что вы можете LibA а также LibB Репозитории несколько раз на сервере, не имея нескольких копий на сервере. Пожалуйста, смотрите мой ответ на другой вопрос о subrepos для деталей.

Кроме того, просто приходите к нам на #mercurial, если у вас есть подобные проблемы - это гораздо лучше, чем писать длинные посты в Stackru, так как это не то, где сообщество Mercurial в любом случае. Вы также можете использовать наши списки рассылки.

Другие вопросы по тегам