mercurial hg - отправка в клонированный репозиторий через ошибки APACHE с «репозиторий не связан» - PullRequest
0 голосов
/ 10 июня 2010

Два сценария, один работает, другой - нет, когда им обоим следует:

  • Сценарий № 1: (НЕ работает через Apache)
    • 2 репо на СЕРВЕРЕ Сервера: Репо "A", Репо "B" клонировано из репо А через http://SERVER/HG/A
    • На клиенте:
      Репо А клонировано от http://SERVER/HG/A
      Репо Б клонировано от http://SERVER/HG/B
    Добавил файл для репо А с клиента и зафиксировал и поднял его до http://SERVER/HG/A ... WORKS Добавил файл для репо B с клиента и зафиксировал и передал его до http://SERVER/HG/B ... ОШИБКА с прерыванием: репозиторий не связан , он работает только если I -f (принудительно) нажать
  • Сценарий № 2: (работает через файловую систему)
    • На сервере SERVER: Репо "A", Репо "B", клонированное из E: / HG / A
    • на клиенте:
      Repo A, клонированный из E: / HG / A
      Репо B, клонированный из E: / HG / B
    Добавил файл для репо А с клиента и передал и отправил его в E: / HG / A ... WORKS
    Добавил файл в репозиторий B с клиента и передал его в E: / HG / B ... WORKS

Вывод: ... Что-то в конфигурации apache или в интеграции между apache и mercurial делает репо «не связанным» .... Есть идеи??? Почему я должен заставить в первом сценарии, а не во втором ?? ... и я попробовал оба сценария через tortoisehg, а также из командной строки.

1 Ответ

1 голос
/ 10 июня 2010

Я не совсем понимаю, что происходит в вашем случае, но я призываю сказать, что когда 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.

...