Я не могу заставить Mercurial работать под Apache на Mac OS X Lion - PullRequest
3 голосов
/ 13 октября 2011

Я пытаюсь заставить Mercurial обслуживать с помощью hgwebdir.cgi в Apache в Mac OS X Lion.

Я следовал приведенным здесь инструкциям: http://www.popitandrockit.com/2010/05/mercurial-server-on-osx-106-snow.html

Эта статья предназначена дляСнежный барс (я думаю, никто еще не пытался сделать это на Льве?), Но в основном это работает.Я сделал изменение, которое я не использовал https, потому что рассматриваемая машина находится за брандмауэром моей компании.

В нем говорится, что я должен иметь доступ к репозиторию на http://servername/repository_name, но это не работает.Однако я могу получить их список на http://servername/hg/, где /hg - это адрес ScriptAlias.Таким образом, я должен быть в состоянии получить доступ к хранилищу через http://servername/hg/repository_name, но вместо этого я получаю хорошую страницу Mercurial, сообщающую мне

An error has occured while processing your request:

repository /Users/username/Documents/repository_name not found

Ну, каталог действителен и тамэто допустимый репозиторий в соответствии с Mercurial (т. е. hg log и подобные команды не выдают ошибку)

На главной странице я получаю похожие ошибки в Apache:

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

Если бы я предположил, что скажу, что это была какая-то проблема с доступом или разрешениями, но я недостаточно знаком с Apache или Mac OS X Lion, чтобы рискнуть предположить, как это исправить.

1 Ответ

3 голосов
/ 20 октября 2011

Это действительно похоже на проблему с разрешениями.На стандартной Mac OS X Apache установите веб-пользователя и группу _www, и вам необходимо убедиться, что они имеют права на чтение и запись.Также Mercurial жалуется, если разрешения файла hgrc не соответствуют пользователю.Есть два способа исправить это:

  1. Сделать хранилище принадлежащим пользователю Apache _www.При вводе:

    ls -ld /Users/username/Documents/repository_name
    

    должно отображаться _www _www в третьем и четвертом столбце.Если нет, измените пользователя каталога:

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

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

  2. В качестве альтернативы, явно добавьте своего пользователя в раздел trusted в вашем hgweb.config:

    [trusted]
    users=username
    

    Inв этом случае вам все еще нужно убедиться, что у пользователя _www есть доступ вообще.Если вы наберете:

    ls -ld /Users/username/Documents/repository_name
    

    В первом столбце должно отображаться что-то вроде drwxrwxr-- (важны средние значения rw) и в четвертом _www.Если файлы не доступны для чтения или записи группой, используйте команду chmod для их создания:

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

    И вы можете изменить группу вашего хранилища на _www, например, так:

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

Какой из этих двух вариантов предпочтителен, зависит от вашей ситуации: если вы пытаетесь разместить свой репозиторий на сервере, я бы сказал, что первый вариант предпочтительнее, он проще и немного более безопасен.Если вы пытаетесь разместить его на своей локальной рабочей станции для удобства, второе проще, потому что тогда вы все равно можете получить доступ к хранилищу от вашего текущего пользователя.

Обратите внимание, что для специального обмена это может быть прощепросто запустить hg serve в командной строке.

Надеюсь, это поможет.

...