Ну, основное правило: никогда не вставляйте новые головы в удаленный репозиторий. Потому что, если вы сделаете это, вы будете создавать головы, которые внезапно появятся в хранилище другой команды, что они должны объединиться, и это сбивает с толку. Mercurial будет жаловаться на это, если вы попытаетесь это сделать, если вы не укажете параметр --force.
Но кроме этого это довольно стандартный тариф; Вы назначаете одного или нескольких лиц, ответственных за слияние двух репозиториев (ежедневно или около того), затем извлекаете все изменения из обеих веток, объединяете две головы, а затем отправляете результат обратно в оба репозитория, как это должен делать любой член команды. , Если что-то выдвигается во время слияния, вам нужно выполнить еще одно слияние (надеюсь, без конфликтов), прежде чем нажать.
Чтобы частично автоматизировать это, вы можете установить перехватывающую перехват на двух серверах командного репозитория, которая асинхронно передает изменения на другой сервер и отправляет электронное письмо лицу, ответственному за слияние, если произойдет сбой, поскольку это приведет отдаленные головы. Поскольку интервал времени, в течение которого серверы не синхронизированы, не очень длинный, это, вероятно, будет успешным в большинстве случаев. Он должен включать некоторую логику, чтобы не выдвигать, если он уже выдвигается, и повторять попытку позже, если соединение не работает.