2011-10-13 2 views
3

J'essaye d'obtenir que Mercurial serve avec hgwebdir.cgi sous Apache sous Mac OS X Lion.Je ne peux pas faire fonctionner Mercurial sous Apache sous Mac OS X Lion

J'ai suivi les instructions indiquées ici: http://www.popitandrockit.com/2010/05/mercurial-server-on-osx-106-snow.html

Cet article est pour Snow Leopard (je suppose que personne ne a essayé de le faire sur Lion encore?) Mais il fonctionne la plupart du temps. J'ai fait la modification que je n'ai pas utilisée https parce que la machine en question est derrière le pare-feu de mon entreprise.

Il est dit que je devrais pouvoir accéder à un référentiel au http://servername/repository_name mais cela ne fonctionne pas. Je peux, cependant, obtenir une liste d'entre eux à http://servername/hg/, où /hg est l'adresse ScriptAlias. Donc, je devrais être en mesure d'obtenir un dépôt via http://servername/hg/repository_name, mais je reçois une page Mercurial belle me disant

An error has occured while processing your request: 

repository /Users/username/Documents/repository_name not found 

Eh bien, le répertoire est valide et il y a un dépôt valide là selon Mercurial (c.-à-hg log et des commandes similaires n'ERRor pas)

sur la page principale, je reçois des erreurs similaires dans Apache:

[(date)] [error] [client (ip address)] error accessing repository at /Users/username/Documents/repository_name 

si je pense que je dirais qu'il était quelques s J'ai un problème d'accès ou d'autorisations, mais je ne connais pas assez bien Apache ou Mac OS X Lion pour tenter de trouver une solution.

Répondre

3

Cela ressemble en effet à un problème d'autorisations. Sur une installation standard de Mac OS X Apache, l'utilisateur Web et le groupe sont _www, et vous devez vous assurer qu'ils ont un accès en lecture et en écriture. Mercurial se plaint également si les permissions du fichier hgrc ne correspondent pas à l'utilisateur. Il y a deux façons de le fixer:

  1. Faire le dépôt appartenant à l'utilisateur Apache _www. Lorsque vous tapez:

    ls -ld /Users/username/Documents/repository_name 
    

    Il devrait montrer _www_www dans la troisième et la quatrième colonne. Sinon, changez l'utilisateur du répertoire:

    sudo chown -R _www:_www /Users/username/Documents/repository_name 
    

    Notez que si vous changez, vous ne devriez pas accéder au référentiel sur le système de fichiers à partir d'un autre utilisateur, ou encore tout aurez à nouveau les fichiers nouvellement créés le mauvais autorisations

  2. Vous pouvez également ajouter explicitement votre utilisateur à la section trusted dans votre hgweb.config:

    [trusted] 
    users=username 
    

    Dans ce cas, vous devez toujours vous assurer que l'utilisateur _www a accès à tout. Si vous tapez:

    ls -ld /Users/username/Documents/repository_name 
    

    Il devrait montrer quelque chose comme drwxrwxr-- dans la première colonne (milieu rw sont importants) et _www dans le quatrième.Si les fichiers ne sont pas lisibles ou inscriptibles par le groupe, utilisez la commande chmod pour les faire:

    chmod -R go+rwX /Users/username/Documents/repository_name 
    

    Et vous pouvez changer le groupe de votre dépôt à _www comme ceci:

    sudo chown -R :_www /Users/username/Documents/repository_name 
    

Lequel des deux est préférable dépend de votre situation: si vous essayez d'héberger votre référentiel sur un serveur, je dirais que le premier est préférable, c'est plus simple et un peu plus sécurisé. Si vous essayez de l'héberger sur votre poste de travail local pour plus de commodité, la seconde est plus simple, car vous pouvez toujours accéder au référentiel depuis votre utilisateur actuel.

Notez que pour le partage ad hoc, il peut être plus facile d'exécuter simplement hg serve sur la ligne de commande.

J'espère que cela aide.

+0

C'est probablement l'information dont j'ai besoin, mais je n'ai pas réussi à la faire fonctionner ou à y jeter un coup d'œil. Puisque j'ai besoin de travailler sur ce système, j'ai essayé la seconde option, mais pas de chance. –