2010-05-19 4 views
10

Обратите внимание, что это может быть лучше всего подходит для serverfault.com, но поскольку речь идет о размещении репозитория исходного кода программиста, я не совсем уверен. Сначала я отправляю сообщение, полагая, что при необходимости он будет перенесен.Хостинг Mercurial на IIS7

Я пытаюсь разместить клоны моих Mercurial репозиториев на моем собственном сервере (у меня есть основное репо где-то в другом месте), и я пытаюсь настроить Mercurial под IIS.

Я следовал за гидом here , но я получаю сообщение об ошибке .

Решено: Подробности см. В нижней части этого вопроса.

Сообщение об ошибке:

mercurial.error.RepoError: repository /path/to/repo/or/config not found

Вот что я сделал.

  1. Я установил Mercurial 1.5.2
  2. Я создал C: \ Inetpub \
  3. рт.ст.
  4. Скачал источник рт.ст., как в соответствии с инструкциями на веб-странице, и скопировать файл hgweb.cgi в C: \ Inetpub \ Hg (примечания, веб-страница говорит hgwebdir.cgi, но этот конкретный файл не существует, hgweb.cgi, тем не менее, это может быть источником проблемы?)
  5. Я добавил hgweb.config, со следующим содержание:

    [paths] 
    repo1 = C:/hg/** 
    [web] 
    style = monoblue 
    
  6. Я создал C: \ Hg, создал тест подкаталог, и создали хранилище внутри него

  7. Я установил питон 2.6.5, последнюю 2.6 версию с веб-сайта (веб-страницы упоминает мне нужно установите правильную версию или я получу конкретное сообщение об ошибке, так как я не получаю сообщение об ошибке, которое выглядит удаленно, как указано выше, я предполагаю, что 2.6.5 не проблема)
  8. Я добавил новый виртуальный host hg.vkarlsen.no, указывая на c: \ inetpub \ hg
  9. Для этого хоста я добавил сопоставление скриптов в разделе «Сопоставление обработчиков», сопоставление * .cgi с c:\python26\python.exe -u %s %s согласно инструкциям на веб-сайте.

Затем я проверил его, перейдя на http://hg.vkarlsen.no/hgweb.cgi, но получаю сообщение об ошибке.

Для того, чтобы было легче проверить, я упал в командной строке, переходите к C: \ Inetpub \ рт.ст., и выполнив следующую команду (сообщение об ошибке является частью текста ниже):

C:\inetpub\hg>c:\python26\python.exe -u hgweb.cgi 
Traceback (most recent call last): 
    File "hgweb.cgi", line 16, in <module> 
    application = hgweb(config) 
    File "mercurial\hgweb\__init__.pyc", line 12, in hgweb 

    File "mercurial\hgweb\hgweb_mod.pyc", line 30, in __init__ 

    File "mercurial\hg.pyc", line 82, in repository 

    File "mercurial\localrepo.pyc", line 2221, in instance 

    File "mercurial\localrepo.pyc", line 62, in __init__ 

mercurial.error.RepoError: repository /path/to/repo/or/config not found 

Кто-нибудь знает, что мне нужно посмотреть, чтобы это исправить?


Edit: Хорошо, я думаю, что мне удалось получить один шаг ближе к решению, но я все еще озадачен.

Я понял.CGI-файл представляет собой файл сценария питона, а не что-то компиляции, так что я открыл его для редактирования, и эти строки сидит в нем:

# Path to repo or hgweb config to serve (see 'hg help hgweb') 
config = "/path/to/repo/or/config" 

Так что это был мой источник для конкретного сообщения об ошибке.

Если изменить линию к этому:

config = "c:\\hg\\test" 

Тогда я могу перемещаться по пустой репозиторий через Mercurial веб-интерфейс.

Однако, я хочу провести несколько хранилищ, и, видя, как линия говорит, что я могу также ссылку на файл hgweb конфигурации, я попытался это:

config = "c:\\inetpub\\hg\\hgweb.config" 

Но тогда я получаю следующее сообщение об ошибке:

mercurial.error.Abort: c:\inetpub\hg\hgweb.config: not a Mercurial bundle file 
Exception ImportError: 'No module named shutil' in <bound method bundlerepository.__del__ 
of <mercurial.bundlerepo.bundlerepository object at 0x0260A110>> ignored 

Ничего я пытался для переменной конфигурации, кажется, работает:

config = "hgweb.config" 
config = "c:\\hg\\hgweb.config" 
  • различные другие варианты, которые я не помню.

Итак, все еще тупик, указатели на кого-нибудь?

Надеюсь, этот вопрос предоставит другим информацию, если они будут в тупике, как и я.

+1

Вы можете ответить самим себе и принять свой ответ, поэтому вопрос не отображается как неотвеченный. – tonfa

+0

Спасибо за напоминание. –

ответ

7

Я закончил тем, что для редактирования файла hgweb.cgi:

from: from mercurial.hgweb import hgweb, wsgicgi 
     application = hgweb(config) 

to: from mercurial.hgweb import hgweb, hgwebdir, wsgicgi 
     application = hgwebdir(config) 

Примечания добавленных hgwebdir части там. Вот мой hgweb.config файл, расположенный в том же каталоге, что и файл hgweb.cgi:

[collections] 
C:/hg/ = C:/hg/ 

[web] 
style = gitweb 

Это теперь служит моим репозиториев успешно.