Mercurial рабочий процесс с суб-репозиториями и автономными клонами? - PullRequest
4 голосов
/ 03 марта 2011

Я много не в сети.

Поэтому обычно я использую один локальный клон в качестве "хаба" для функций, ошибок и т. Д.

hg clone local-hub bug-123

Работает в автономном режиме.Круто.

Могу ли я использовать аналогичный рабочий процесс, если этот проект содержит удаленные подкаталоги?

Потому что, если .hgsub говорит

sub/shared = http://server/hg/shared

hg, клон говорит

abort: error: getaddrinfo failed

Обратите внимание, что после создания клона (при подключении) push и pull будут использовать путь в подпункте hgrc (вместо местоположения в .hgsub).Так что я могу указать это на локального клона, и все круто.

Но clone смотрит на .hgsub (как и положено).Так что, если «благословенный» подрепортаж находится на сервере, я не могу создавать новые клоны в автономном режиме, даже если нужные мне файлы прямо там.

Это проблема, верно?

Ответы [ 2 ]

6 голосов
/ 03 марта 2011

В идеале, кто бы ни настраивал проект, он использует относительные URL в своем файле .hgsub, например:

sub/shared = ../shared

, а затем, конечно, на самом деле делает общий брат главного репо. Тогда, пока вы клонировали основной репо и сабы (как братьев и сестер), все будет работать.

Если они использовали абсолютные URL-адреса в своем файле .hgsub, вы можете обойти это, используя раздел подпутей в вашем .hgrc следующим образом:

[subpaths]
http://server/hg/shared = ../shared

, который обеспечивает слой перевода в вашем клиенте.

2 голосов
/ 08 марта 2011

Канонический способ использования под-репозиториев - иметь в файле .hgsub пути X = X:

sub/shared = sub/shared

Таким образом, клон будет выглядеть структурно так же, как и оригинал, и, таким образом, вы сможете использовать клон для создания дальнейших (локальных!) Клонов.

Однако это не всегда возможно, например, Bitbucket не позволит вам создавать вложенные репозитории на их сервере. В этом случае пути в стиле ../X в файле .hgsub лучше, и вы можете использовать раздел конфигурации subpaths , чтобы преобразовать эти пути в пути, которые вы можете использовать локально.

...