Нажатие ртутного репо без подталкивания

Я использую Mercurial 1.6. У меня есть репо с несколькими subrepos (11). Я хотел бы нажать родительское репо на удаленное репо по умолчанию, не нажимая дочерние репозитории. Причины для этого:

  • Я использую репозитории SSH, и для установления соединения требуется много времени и ничего не нажимать на каждый из подположений.
  • Я выполняю в subrepos, я не хочу распространяться на удаленные репозитории (пока).
  • Subrepos имеют имена ветвей, которые не должны быть распространены в репозитории repote (и, по-видимому, нет способа передать имена ветвей операции push для подпоследовательности).

Однако я не смог найти способ выполнить это. Я попытался удалить содержимое .hgsub и .hgsubstate(без фиксации), но все же Mercurial настаивает на том, чтобы подталкивать subrepos.

Как я могу нажимать изменения из локального репо на удаленное репо и временно игнорировать субресурс?

Ответ 1

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

Проблема с нажатием основного репо без подталкивания подпозиций заключается в том, что содержимое подпозиций не является частью основного репо - только их состояния. Содержимое ссылается на исходное местоположение, указанное в .hgsub. Поэтому в вашем основном репо .hgsubstate говорится: "subrepo A находится в редакции abcd1234", но abcd1234 - это изменение, которое вы сделали, которого не хотите нажимать... и теперь, что произойдет, если вы клонируете основное репо? Он попытается клонировать subrepo из своего исходного местоположения и обновить его до abcd1234, но эта ревизия не существует в исходном местоположении, поэтому клон будет терпеть неудачу.

Вместо этого вы можете создавать локальные клоны каждого внешнего репозитория и ссылаться на них как на внешние местоположения subrepos. Затем, когда вы нажимаете основное репо, изменения subrepo будут распространяться только на ваши локальные клоны. Когда вы будете готовы поделиться этими изменениями, просто перейдите к локальным клонам и нажмите оттуда, и вы сможете передавать имена ветвей и т.д.