Как настроить центральный репозиторий Mercurial на виртуальном хостинге - PullRequest
3 голосов
/ 20 марта 2010

Я пытаюсь настроить центральное хранилище с общим хостингом. Я прочитал весь этот урок https://www.mercurial -scm.org / wiki / PublishingRepositories безрезультатно. Вот шаги, которые я предпринял.

1. Copy hgwebdir.cgi file to directory at http://url.com/central_repository/hgwebdir.cgi
2. Added the following information to the hgweb.config file and copied it to same place.
       [paths]
       projectname = /home/username/central_repository/projectname

       [web]
       baseurl = /hg
3. Added the following to an htaccess file and copied it to the same place
       # Taken from http://www.pmwiki.org/wiki/Cookbook/CleanUrls#samedir
       # Used at http://ggap.sf.net/hg/
       Options +ExecCGI
       RewriteEngine On
       #write base depending on where the base url lives
       RewriteBase /hg
       RewriteRule ^$ hgwebdir.cgi  [L]
       # Send requests for files that exist to those files.
       RewriteCond %{REQUEST_FILENAME} !-f
       # Send requests for directories that exist to those directories.
       RewriteCond %{REQUEST_FILENAME} !-d
       # Send requests to hgwebdir.cgi, appending the rest of url.
       RewriteRule (.*) hgwebdir.cgi/$1  [QSA,L]
4. Uploaded the repository without the working directory to /home/user/central_repository/projectname
5. Tried to clone the repository to my computer using the folloing destination path: http://url.com/hg/projectname

После выполнения этих шагов я получаю ошибку 404: не найден.

Однако, если я изменяю путь назначения на http://url.com/central_repository/projectname Он действует так, как будто он нашел хранилище, Он сообщает мне, что нашел наборы изменений, и он добавляет наборы изменений и манифесты, но затем он говорит: «транзакция отменена! Ошибка HTTP 500: внутренняя ошибка сервера.

Спасибо за любую помощь! Metropolis

EDIT

Кроме того, всякий раз, когда я пытаюсь поместить ScriptAlias, Alias, предыдущее содержимое или следующее содержимое в файл htaccess, я получаю внутреннюю ошибку сервера 500.

<Directory "/home/username/central_repository/projectname">
    DirectoryIndex index.cgi
    AddHandler cgi-script .cgi
    Options ExecCGI
    Order allow,deny
    Allow from all
</Directory>

На самом деле, если я возьму все из файла hgwebdir.cgi, за исключением следующего, я получу ошибку 500.

#!/usr/bin/env python
#
# An example CGI script to export multiple hgweb repos, edit as necessary

Я даже пытался поместить этот файл в каталог cgi-bin, и я все еще получаю сообщение об ошибке. Я также был уверен, чтобы установить права доступа к файлу 755. Возможно ли, что я не могу запустить файлы python на этом сервере?

Ответы [ 4 ]

1 голос
/ 20 марта 2010

Если расширение .cgi еще не сопоставлено с обработчиком cgi в конфигурации Apache вашего хоста, вам нужна строка ScriptAlias ​​или AddHandler для вашего скрипта hgwebdir.cgi. На самом деле вы можете избавиться от всего этого ненужного RewriteCond и RewriteRule, если вы просто сделаете один ScriptAlias:

ScriptAlias /hg /home/username/central_repository/hgwebdir.cgi

Также в репозитории есть каталог /home/user/central_repository/projectname/.hg, верно? Поместить содержимое .hg непосредственно в имя проекта было бы неправильно.

Наконец, попробуйте зайти на него с помощью браузера, не используя клон. Что вы видите на http://ggap.sf.net/hg/? Что находится в журналах доступа и ошибок apache? Надеюсь, у вас есть доступ к журналу ошибок, потому что он всегда имеет лучший выход для отладки этого материала.

0 голосов
/ 18 марта 2011

У меня была такая же проблема. Мне нужно было настроить сервер Mercurial на общем хосте, к которому у меня нет доступа root / shell. Я последовал этому руководству и с удивительно небольшим разочарованием заставил его работать: http://javadocs.wordpress.com/2010/04/27/set-up-mercurial-1-5-1-on-a-shared-host-simplified/

0 голосов
/ 01 июля 2010

Это также может быть ошибка разрешения.

Я только что столкнулся с подобной ситуацией, когда я создал хранилище в моем обычном месте, где apache забирает его через hgwebcgi. Я мог клонировать этот репозиторий локально (не через веб-сервер), но не с удаленного клиента, поэтому я знал, что это не ошибка hg как таковая.

Оказалось, что проблема в том, что мой репозиторий принадлежал пользователю, с которым я его создал, без доступа для чтения / записи, предоставленного apache.

Запуск

chown -R apache:apache <repo>

сделал свое дело. (Я имею эксклюзивный доступ к этим репозиториям через Интернет, так что это выглядит нормально, в противном случае придумаю решение, которое позволит доступ к Apache без его владения)

0 голосов
/ 22 марта 2010

http://wiki.dreamhost.com/Mercurial

Это работало для меня в прошлом.

...