Синхронизация подпунктов на центральном сервере - PullRequest
0 голосов
/ 22 сентября 2011

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

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

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

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 Ответ

1 голос
/ 23 сентября 2011

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

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

...