Mercurial репозиторий с подкаталогом bitbucket - как предотвратить push - PullRequest
4 голосов
/ 20 января 2012

Я нахожусь в процессе создания некоторых сторонних подпапок в репозитории Mercurial.Один подпункт - это другой репозиторий Mercurial, размещенный на Bitbucket.

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

Итак, я сделал запись в репозитории * 1005 родительского репо.* файл выглядит следующим образом:

thesubrepo = https://bitbucket.org/user/repo

и клонировал репо с помощью

$ hg clone https://bitbucket.org/user/repo thesubrepo

Я сделал коммит для записи состояния подрепортажа.Затем я отправил свое родительское репо обратно на его сервер (Kiln) только для того, чтобы обнаружить, что он пытался отослать вложенный репо на сервер Bitbucket.Похоже, что пересылка в подкаталог Bitbucket ничего не делает.

Я не наблюдал такого поведения, когда создавал подпункт Git таким же образом (размещенный на концентраторе Git), используя запись в .hgsub, какthis

abc = [git]git://github.com/xyz/abc

Разве для меня лучше всего сделать это, не настраивая под-репозиторий, а просто позволяя Mercurial сохранять файлы в виде файлов?Или (предпочтительно) есть где-то настройка, которую я могу использовать, чтобы сказать Mercurial, что он никогда не будет перенаправлять содержимое этого подрепортажа обратно в исходное местоположение?

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

Я нашел ссылку на commitsubrepos = no в другом ответе переполнения стека, что, насколько я могуРасскажите о коммитах, а не о подтасовках суб-репозиториев.Затем я посмотрел это на веб-сайте Mercurial , в надежде, что может быть какая-то ссылка на настройку, относящуюся к отправке подпунктов, но ... нет

1 Ответ

4 голосов
/ 20 января 2012

Вы не можете (в настоящее время, начиная с версии 2.0) просить Mercurial не выдвигать вложенные репозитории.

Основная проблема заключается в том, что Mercurial должен обеспечить согласованное состояние удаленного репозитория при отправке. Было бы небезопасно , если бы вы могли вернуться к Kiln и затем иметь там набор изменений, который ссылается на ревизию в Bitbucket, которой там нет. Mercurial не знает, опубликована ли ваша локальная ревизия или вы ее создали, поэтому она должна (попытаться) нажать.

В настоящее время мы работаем над концепцией , которая называется фазы . После этого Mercurial начнет отслеживать, если набор изменений создан локально или уже опубликован. Это также может быть использовано для суб-репозиториев: если в фазе «public» в субрепозиции есть только наборы изменений, то нет необходимости пытаться нажать!

...