Нажмите на два хранилища, которые не могут достичь друг друга - PullRequest
6 голосов
/ 25 ноября 2011

Настройка:

  • ноутбук L
  • офисный сервер, на котором размещены различные репозитории SOffice
  • сервер базы данных клиента SCustomer

Я пишу код на L для клиента и регулярно хочу отправить его как в SOffice, так и в SCustomer.

Я знаю, что мог бы использовать ловушку changegroup для передачи в третий репозиторий извторой (как описано в этом ответе ), но для этого требуется, чтобы второй мог достичь третьего по сети.

В моем случае каждый из них находится за брандмауэром, и обычно только мой ноутбукдоступ к обоим через VPN (или физически там).Я мог бы настроить VPN на SOffice, чтобы добраться до SCustomer, но я бы предпочел этого не делать.

Можно ли, скажем, установить default в два репозитория?

Ответы [ 3 ]

7 голосов
/ 25 ноября 2011

Вы не можете default для двух репозиториев, но вы можете определить более одного репозитория в вашем hgrc файле:

[paths]
default= /path/to/first/repo
scustomer = /path/to/second/repo

Затем вы можете явно переместить в репозиторий scustomer:

hg push scustomer

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

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

5 голосов
/ 25 ноября 2011

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

3 голосов
/ 25 ноября 2011

Существует MultirepoExtension , который добавляет команды для выполнения любой операции в нескольких хранилищах.

Или вы можете создать псевдоним, который будет выдаваться на оба типа:

[aliases]
pushboth = !$HG push http://first ; $HG push http://second

или вы можете создать крюк предварительного толкания, который подталкивает к другому. Что-то вроде:

[hooks]
pre-push = hg push http://second

Но мне больше всего нравится (и проголосовал) ответ krtek. Просто дайте каждому псевдоним пути и дважды нажмите push с короткими именами вместо URL.

...