Подтвердить что ты не робот

Как мне настроить 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: "Нет репозиториев".

4b9b3361

Ответ 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