Синхронизация подпунктов на центральном сервере
Я продолжаю думать, что понимаю подпункты и то, как я могу заставить их работать в рабочих процессах моей команды, но, очевидно, я не понимаю, потому что каждый раз, когда я пытаюсь реализовать какой-то базовый рабочий процесс, что-то не получается работать правильно.
Я прочитал почти все, что можно почитать о подпунктах онлайн, и следую всем тривиальным примерам, которые публикуют люди, но когда я пытаюсь сделать что-то более сложное. Или, может быть, я прекрасно понимаю это, и то, что я пытаюсь сделать, это просто не то, что работает хорошо.
Давайте разберемся с основами. Допустим, у меня есть удаленная "благословенная" коллекция репозиториев.
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 в любом случае. Вы также можете использовать наши списки рассылки.