Как мне настроить gitweb и gitolite, чтобы они работали вместе?
Я пытаюсь заставить gitweb работать с гитолитом... но пока не удалось.
Я работаю над машиной RedHat Linux. Пользователь с именем git
существует.
Гитолит установлен под: /home/git
Местоположение репозитория: /home/git/repositories
Обратите внимание, что gitweb отлично работал с простой ванилью git. Теперь я пытаюсь заставить его работать с гитолитом.
Вот как выглядят мои файлы:
-
/etc/gitweb.conf
$projectroot = "/home/git/repositories";
@git_base_url_list = qw(ssh://[MyHostName]/home/git/projects.list);
$projects_list = "/home/git/projects.list"
-
/home/git/projects.list
myrepo1.git
myrepo2.git
-
/home/git/.gitolite.rc
:
$PROJECTS_LIST = $ENV{HOME} . "/projects.list";
$GL_GITCONFIG_KEYS = "gitweb.url receive.denyNonFastforwards receive.denyDeletes";
Какую конфигурацию я пропустил?
Я не внес никаких изменений в Apache.
Веб-адрес: http://MyHostName/git
Это приводит к ошибке 404: "Нет репозиториев".
Ответы
Ответ 1
Недавно я установил гитолит и gitweb и обнаружил, что /etc/gitweb.conf
требуется очень небольшая конфигурация. То, что у тебя есть, подходит ко мне. Каковы разрешения, например, на /home/git/repositories
? Вы можете обнаружить, что они слишком ограничительны. Попробуйте это:
$ chmod -R 775 /home/git/repositories
То, что решило проблему для меня, (хотя я считаю, что существует более безопасный способ настройки разрешений). Если это сработает, я бы рекомендовал просто взглянуть на то, чтобы Apache (или любая другая учетная запись пользователя gitweb выполнялась под) более мелкие разрешения в каталоге репозиториев.
У меня также есть это в моем .gitolite.rc
:
GIT_CONFIG_KEYS => 'gitweb\.(owner|description|category)',
так что в <gitolite-admin>/conf/gitolite.conf
выполняется следующее:
config gitweb.owner = owner name
config gitweb.description = some description
config gitweb.category = some category
Ответ 2
Вам нужно добавить Gitolite contrib/gitweb.conf
в конце /etc/gitweb_config.perl
.
Другими словами, вам нужно вызвать функцию Gitolite из вашего файла gitweb.conf
perl, иначе интеграция GitWeb-Gitolite никогда не будет работать.
# check for (at least) "R" permission
my ($perm, $creator) = &repo_rights($repo);
return ($perm =~ /R/);
(здесь repo_rights
- это метод из gitolite.pm)
Отметьте раздел помощь с gitweb".
Последними строками, которые нужно добавить на конце gitweb_config.perl
, являются:
use lib (".");
require "gitweb.conf.pl";
Таким образом, вы избежите сообщения об ошибке "500 - Internal Server Error syntax error at /etc/gitweb.conf
".
Если у вас нет gitweb_config.perl
, в котором вы объявляете gitweb.conf.pl
, но прямо "gitweb.conf.pl
", добавьте "use lib (".");
" в качестве первой строки этого файла.
Ответ 3
1/install gitolite
и настройте его. Затем достаточно убедиться, что /home/git/.gitolite.rc
содержит недокументированные части, которые выглядят следующим образом:
%RC = (
...
UMASK => 0027,
...
ENABLE => [
...
'gitweb',
...
]
);
2/установите правильные директивы $projectroot
и $projects_list
/etc/gitweb.conf
(чтобы найти расположение файла projects.list
и repositories
dir). Как:
$projectroot = "/home/git/repositories";
...
$projects_list = "/home/git/projects.list";
3/Убедитесь, что текущие файлы репозитория также читаются пользователем веб-сервера. Эти примеры взяты из систем на основе debian, поэтому YMMV:
sudo adduser www-data git # append `www-data` user to a `git` group
sudo chmod g+r /home/git/projects.list # make sure group members can read the `project.list`
sudo chmod -R g+rx /home/git/repositories # recursively set less restrictive access mode for group members
sudo /etc/init.d/apache2 restart # restart web server to apply these changes
4/Наконец настройте доступ для пользователя gitweb
в файле /conf/gitolite.conf
репозитория gitolite-admin
на клиентской машине и примените их, совершив и нажав их (стандартный путь). Репозиторий, который мы хотели бы видеть и управляем с помощью gitweb
, должен иметь такой доступ:
repo testing
RW+ = @all
R = gitweb # add this line to make the repo browsable using `gitweb`
Примечание. ...
предполагает, что в файлах есть другие директивы конфигурации. Не кладите их туда!
Никаких других шагов не требуется, чтобы сделать gitlab
визуализацию репозиториев gitolite
.
Применяется (по крайней мере) для gitolite
3.6.6 и gitweb
2.1.4