Mercurial суб-репозитории - PullRequest
3 голосов
/ 11 марта 2011

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

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

  • Инфра (который будет общим кодом)
  • .hg
    • infra.txt
  • dev1
    • dev1.txt
    • .hgsub (в котором есть строка -> infra = (путь инфра))
    • инфра (subrepo)
      • .hg
      • infra.txt
  • DEV2
    • dev2.txt
    • .hgsub (так же, как в dev 1 - infra = (путь к инфра))
    • инфра (subrepo)
      • .hg
      • infra.txt

Теперь предположим, что один разработчик клонирует dev1, а другой клонирует dev2. То, что я вижу, это то, что, когда разработчик dev1 меняет инфра и нажимает изменения в репозитории в центре, единственный способ разработчика dev2 знать Об изменении в том, чтобы вручную искать входящие наборы изменений в Инфра как суб-хранилище. Как правило, это означает, что если мой проект имеет много суб-репозитории (которые сами могут содержать еще несколько суб-репозиториев), У меня нет возможности узнать об изменениях, кроме как пройти через мой суб-репозитории вручную.

Я думаю, что это не способ работать ... Кто-нибудь может помочь?

Заранее спасибо,

Эяль

Ответы [ 2 ]

3 голосов
/ 11 марта 2011

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

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

Таким образом, можно контролировать, какие под-репозитории изменены, и хочет ли она получать обновленные файлы в этих под-репозиториях.

1 голос
/ 11 марта 2011

Вам придется тянуть за каждый репозиторий.Вы можете подумать, что это утомительно, но Mercurial не сможет принять решение о внесении изменений в ваш репозиторий для вас - это хорошо.

Что вы можете сделать, это создать простой пакетный скрипт, который запускаетКоманда 'hg pull' для каждого хранилища.Это, по крайней мере, автоматизирует процесс, так что он становится менее утомительным, когда вы действительно хотите извлечь из всех репозиториев.

Мы переместили все наши подпереговоры в один репозиторий, что значительно упрощает управление изменениями / новыми функциями, требующими измененийдля всех наших библиотек.

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

...