Gitweb не может найти репозитории Такие проекты не найдены

У меня есть работающий репозиторий git на моем сервере CentOs 5.5. Мне нужен веб-интерфейс для моих репозиториев с использованием gitweb.

Я установил gitweb, следуя инструкциям на странице http://git-scm.com/book/ch4-6.html, и мне удалось заставить мой сервер apache правильно запускать cgi. Я поместил свои репозитории в /pub/git и создал файл gitweb.conf в /etc/ со строкой $projectroot = '/pub/git';. К сожалению, я не вижу свои репозитории, и на веб-странице отображается сообщение «Такие проекты не найдены», которое я безуспешно гуглил.

Я попытался добавить строку $projects_list = '/pub/git/projects.list'; в gitweb.conf и создал файл projects.list с именем моего репозитория (например, repos1.git). Ничего не меняется. Если я поставлю имя несуществующего репозитория в /pub/git, на веб-странице появится более популярное и изученное сообщение об ошибке «404 - Проекты не найдены».

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

Содержание моего /etc/gitweb.conf:

$projectroot = '/pub/git';
$projects_list = '/pub/git/projects.list';

Спасибо!


person Enzo    schedule 19.03.2013    source источник
comment
Можете ли вы опубликовать точное содержание вашего /etc/gitweb.conf ?   -  person Tuxdude    schedule 19.03.2013
comment
@Tuxdude, спасибо за интерес. Файл conf содержит только две строки $projectroot = '/pub/git'; $projects_list = '/pub/git/projects.list';   -  person Enzo    schedule 20.03.2013


Ответы (6)


Я решил свою собственную проблему и решил опубликовать решение, если кто-то еще столкнется с этим.

Оказывается, gitweb просто не смог найти исполняемый файл git. Другими словами, инструкции make make GITWEB_PROJECTROOT="/path/to/git/git" показаны на http://git-scm.com/book/ch4-6.html недостаточно.

Причина, по которой мне потребовалось так много времени, чтобы понять это, заключается в том, что можно было бы ожидать появления проблемы другого типа, а не просто пустого списка репозиториев! Похоже, чтобы показать последнее сообщение коммита, gitweb запускает git rev-list в проекте. Когда он не может найти git, он просто отказывается от перечисления проектов. Все, что мне нужно было сделать, это добавить строку $GIT = '/path/to/git/git'; к моему gitweb.conf.

Ваше здоровье!

person Enzo    schedule 20.03.2013
comment
Да, это имеет смысл, потому что команды git будут запускаться службой cgi (веб), обычно с использованием непользовательской учетной записи, такой как «git», «apache» и т. д., с минимальным PATH по умолчанию. - person Andrew; 26.04.2019

Я столкнулся с той же проблемой на bluehost.com, и указание полного пути к двоичному файлу git не помогает, но, как указано в комментариях gitweb.cgi, "это может быть просто «git», если ваш веб-сервер имеет разумный PATH», вылечил эту проблему, поэтому все, что нужно исправить, это:

our $GIT = "git";

либо в самом gitweb.cgi, либо в "gitweb_config.perl"

person Alex    schedule 14.05.2013

Я думал, что projectroot был определен в gitweb.conf, но он также был жестко запрограммирован в gitweb.cgi. Возможно, в моей реализации нет источника gitweb.conf. Несмотря на это, я отредактировал gitweb.cgi на our $projectroot = /home/git, и это исправило мою ошибку.

person Andrew    schedule 16.11.2016

Если вы уже создали репозитории, а затем установили gitweb, то защита репозиториев может быть неправильной. Мой первоначальный UMASK был 077, поэтому все мои репозитории доступны только пользователю git.

Когда я сделал:

cd /home/git
chmod -R 750 repositories

и добавил www-данные в группу "git":

usermod -a -G  git www-data

Я заработал.

person Ulf Samuelsson    schedule 24.03.2014

Я также столкнулся с этой проблемой в CentOS 6.4 и просто хотел добавить свое решение в эту тему.

Для меня проблема заключалась в том, что SELinux был включен. Это блокировало процесс httpd от доступа к моему каталогу репозитория, даже если я chmod 777 на нем.

Для меня просто отключение SELinux решило проблему. Если отключение невозможно, вам нужно посмотреть, как настроить SELinux, чтобы разрешить httpd доступ к вашему каталогу репозитория.

person user2639134    schedule 31.07.2013

Для сервера CentOS6, который я только что настроил для gitweb, это вызвано SELinux.

setnforce 0

исправлена ​​проблема

person electro    schedule 09.04.2015
comment
Хотя SELinux может быть причиной этого, его полное отключение не является приемлемым решением. - person Mike Shultz; 19.05.2015