2010-08-01 6 views
2

Hier, j'ai configuré Apache pour servir mes dépôts Mercurial et j'ai tout fait fonctionner correctement. J'ai ensuite testé l'envoi de modifications dans ce dépôt et j'ai reçu une erreur, et maintenant cette erreur apparaît pour chaque opération que je tente - même une simple requête GET des dépôts! Voici l'erreur:Mercurial: Permission refusée pour hgwebdir

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' 

Mon répertoire de dépôt appartient à Apache, l'utilisateur exécutant Apache. Je ne sais pas pourquoi './dev/fd' est exploité soit. J'ai redémarré le serveur plusieurs fois, recréé le répertoire du référentiel, mais je reçois toujours cette erreur, peu importe quoi! Je n'ai pas accès pour redémarrer la machine, donc ce n'est pas une option. Mais il semble avoir eu un très mauvais état persistant, et je ne sais pas comment le réparer. Toute aide est appréciée!

+0

Postez votre solution en guise de réponse et acceptez-vous. – mpen

Répondre

3

Cela s'est avéré être une erreur de configuration de ma part, et plutôt que de supprimer la question, je vais poster la résolution ici au cas où quelqu'un a ce problème dans le futur.

Voici était le hgweb.config j'utilisais:

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

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

Deux problèmes ici, on est évidente. L'en-tête [web] a été commenté, et je suppose que la plupart des options ne sont pas valides pour la section [paths]. De plus, après avoir relu les docs Hg, la directive push_ssl n'appartient pas au fichier hgweb.config, mais plutôt au .hg/hgrc de chaque référentiel (ou au ~/.hgrc de l'utilisateur qui exécute apache). Après avoir réparé ceux-ci, les choses fonctionnent parfaitement!