Mercurial: в hgwebdir отказано в доступе - PullRequest
2 голосов
/ 01 августа 2010

Вчера я настроил Apache для обслуживания своих репозиториев Mercurial и все заработало правильно.Затем я протестировал отправку изменений обратно в этот репозиторий и получил ошибку, и теперь эта ошибка появляется при каждой попытке, которую я пытаюсь выполнить, даже при простом запросе GET к репозиторию!Вот ошибка:

mod_wsgi (pid=1771): Target WSGI script '/var/hg/hgweb.wsgi' cannot be loaded as Python module.
mod_wsgi (pid=1771): Exception occurred processing WSGI script '/var/hg/hgweb.wsgi'.
Traceback (most recent call last):
  File "/var/hg/hgweb.wsgi", line 18, in ?
    application = hgwebdir(config)
  File "/usr/lib64/python2.4/site-packages/mercurial/hgweb/__init__.py", line 15, in hgwebdir
    return hgwebdir_mod.hgwebdir(*args, **kwargs)
  File "/usr/lib64/python2.4/site-packages/mercurial/hgweb/hgwebdir_mod.py", line 52, in __init__
    self.refresh()
  File "/usr/lib64/python2.4/site-packages/mercurial/hgweb/hgwebdir_mod.py", line 82, in refresh
    self.repos = findrepos(paths)
  File "/usr/lib64/python2.4/site-packages/mercurial/hgweb/hgwebdir_mod.py", line 36, in findrepos
    for path in util.walkrepos(roothead, followsym=True, recurse=recurse):
  File "/usr/lib64/python2.4/site-packages/mercurial/util.py", line 1164, in walkrepos
    for hgname in walkrepos(fname, True, seen_dirs):
  File "/usr/lib64/python2.4/site-packages/mercurial/util.py", line 1146, in walkrepos
    for root, dirs, files in os.walk(path, topdown=True, onerror=errhandler):
  File "/usr/lib64/python2.4/os.py", line 276, in walk
    onerror(err)
  File "/usr/lib64/python2.4/site-packages/mercurial/util.py", line 1127, in errhandler
    raise err
OSError: [Errno 13] Permission denied: './dev/fd'

Мой каталог репозитория принадлежит apache, пользователю, работающему под Apache.Я не знаю, почему оперируют «./dev/fd».Я много раз перезагружал сервер, воссоздал каталог репозитория, но я все равно получаю эту ошибку, несмотря ни на что!У меня нет доступа к перезагрузке машины, так что это не вариант.Но, похоже, он попал в очень плохое постоянное состояние, и я не знаю, как это исправить.Любая помощь приветствуется!

1 Ответ

3 голосов
/ 02 августа 2010

Это оказалось ошибкой конфигурации с моей стороны, и вместо того, чтобы удалять вопрос, я опубликую разрешение здесь на случай, если у кого-то возникнет эта проблема в будущем.Я использовал:

[paths]
/ = /var/hg/repos/*

#[web]
style = gitweb
allow_archive = bz2 gz zip
maxchanges = 200
allow_push = *
push_ssl = false

Две проблемы здесь, одна очевидна.Я закомментировал заголовок [web], и я предполагаю, что многие параметры недопустимы для раздела [paths].Кроме того, после повторного чтения документов Hg директива push_ssl не принадлежит файлу hgweb.config, а скорее содержится в .hg/hgrc каждого репозитория (или ~/.hgrc пользователя, запускающего apache).После исправления все работает отлично!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...