Я не совсем понимаю, что происходит в вашем случае, но я призываю сказать, что когда mercurial говорит «не связано», это означает: два хранилища не имеют корня или корней.
Обычно у ртутного репозитория есть один корень, ревизия 0, и любой репозиторий с таким же корнем может перейти к нему. Хранилище может иметь несколько корней, обычно это результат того, что кто-то делает push -f
.
Так что то, что вы делаете в первом сценарии, должно сработать. Если это не так, то либо ваша конфигурация apache указывает http://SERVER/HG/B
куда-то, чем вы думаете (возможно, это плохо RewriteRule
или RedirectMatch
или ScriptAlias
, либо ваш Repo B не клонирован из Repo A, как вы думал, что это произошло, или Repo A или B изменились фундаментально после того, как B был первоначально клонирован.
Существуют некоторые инструменты, которые изменят хеш-код вашего корневого (ревизия 0) узла, если он используется для изменения этого узла: mq, histedit, strip, rebase и т. Д. И это потому, что изменение хеша полностью меняет репо, что эти инструменты по умолчанию отключены и предназначены только для локальных изменений без изменений.
Чтобы начать отладку, перейдите на СЕРВЕР и посмотрите, что произойдет, если вы делаете входящие или исходящие между репозиториями A и B на уровне файловой системы. Если те жалуются, то вы знаете, что это не Apache, а если они это делают, то это что-то в вашей настройке Apache.