Репозиторий Mercurial с дополнительным репозиторием bitbucket - как предотвратить push

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

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

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

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

и клонировали репо, используя

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

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

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

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

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

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

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


person unsynchronized    schedule 20.01.2012    source источник
comment
Я отредактировал ваш вопрос, чтобы сделать его немного короче. Надеюсь, ты не против. Так людям будет легче ответить на него - иначе они могут просто пропустить его, если он будет выглядеть слишком сложным.   -  person Martin Geisler    schedule 20.01.2012


Ответы (1)


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

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

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

person Martin Geisler    schedule 20.01.2012