Ubuntu: gitweb всегда ищет проекты в /var/cache/git (404 — проекты не найдены)

После установки gitweb на сервер Ubuntu 12.04 (64-разрядная версия) и изменения переменной $projectroot в /usr/share/gitweb/gitweb.cgi на любой каталог, кроме /var/cache/git, поиск проектов по-прежнему выполняется в /var/cache/git.

Это происходит с пакетом gitweb Ubuntu (1.7.9.5), а также с клонированием репозитория Git и компиляцией последней стабильной ветки (1.8.0.1).

Проблема также может проявляться как «404 — проекты не найдены» на сайте Apache gitweb, потому что проекты будут находиться в каталоге, отличном от /var/cache/git.


person Alf    schedule 28.11.2012    source источник


Ответы (2)


В Ubuntu файл /usr/share/gitweb/gitweb.cgi не должен редактироваться. Переменная $projectroot должна быть установлена ​​в /etc/gitweb.conf.

Спасибо списку рассылки Git за помощь.

person Alf    schedule 04.12.2012

После определения $projectroot=/var/git (как в моем случае), если я вставлял значение $projectroot в <title> в строке 3915, отображалась строка /var/cache/git, поэтому проблема в том, что где-то в файле cgi значение $projectroot было сброшено до системного. дефолт.

Виновником такого поведения является подпрограмма git_get_projects_list, где в строке 2865 глобальная переменная our $projectroot определяется еще раз, сбрасывая ее значение до системного значения по умолчанию. Способ решить эту проблему состоит в том, чтобы в той же строке объявить ее и установить для нее то же значение, что и выше:

...
2,863. # global variables                                       
2,864. our $project_maxdepth = 2007;
2,865. our $projectroot = "/var/git";
2,866. # skip project-list toplevel, if we get it.              
2,867. return if (m!^[/.]$!);
...

Я не видел сообщения об этой проблеме в списках рассылки Ubuntu или Git, поэтому любое понимание того, является ли это ошибкой или функцией (хотя для меня это явно ошибка), или если это происходит в других дистрибутивах Linux, будет быть высоко оценен.

person Alf    schedule 28.11.2012
comment
Меня ввела в заблуждение книга Git '4.6 Git on the Server - GitWeb', так как установка Ubuntu настроена в /etc/gitweb.conf. Я добавил второй ответ с «хорошим» решением. - person Alf; 04.12.2012