Как мне настроить gitweb и gitolite, чтобы они работали вместе? - PullRequest
12 голосов
/ 27 августа 2011

Я пытаюсь заставить gitweb работать с gitolite ... но пока безуспешно.
Я работаю на машине с RedHat Linux.Пользователь с именем git существует.

Гитолит установлен в: /home/git
Местоположение репозитория: /home/git/repositories

Обратите внимание, что gitweb работал нормально с простым ванильным git.Теперь я пытаюсь заставить это работать с gitolite.

Вот как выглядят мои файлы:

  • /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.

Веб-URL: http://MyHostName/git
Это выдает ошибку 404, говорящую - Репозитории не найдены .

Ответы [ 3 ]

13 голосов
/ 30 мая 2012

Я недавно настроил gitolite и 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
0 голосов
/ 19 декабря 2017

1 / установить 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

0 голосов
/ 27 августа 2011

Вам нужно добавить 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 )

Проверьте раздел " helpс 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 (".");" в качестве первой строки этого файла.

...