我如何配置gitweb和gitolite以便它们一起工作?

时间:2011-08-27 17:33:38

标签: git gitolite gitweb

我试图让gitweb与gitolite合作......但到目前为止还没有成功 我正在使用RedHat Linux机器。名为git的用户存在。

gitolite安装在:/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做过任何更改。

网址:http://MyHostName/git
这会产生404错误,说明找不到存储库

3 个答案:

答案 0 :(得分:13)

我最近设置了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

答案 1 :(得分:0)

您需要在/etc/gitweb_config.perl的末尾添加Gitolite contrib/gitweb.conf 换句话说,您需要从gitweb.conf perl文件中调用Gitolite函数,否则集成GitWeb-Gitolite将无法工作。

# check for (at least) "R" permission
    my ($perm, $creator) = &repo_rights($repo);
    return ($perm =~ /R/);

(此处repo_rights是来自gitolite.pm

的方法

查看“helping with 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 (".");”作为第一行文件。

答案 2 :(得分:0)

1 /安装gitolite并进行设置。然后,确保/home/git/.gitolite.rc包含看起来像:

的未注释部分就足够了
%RC = (
    ...
    UMASK                           =>  0027,
    ...
    ENABLE => [
        ...
        'gitweb',
        ...
     ]
);

2 /设置$projectroot的{​​{1}}和$projects_list指令(以匹配/etc/gitweb.conf文件和projects.list目录的位置)。像:

repositories

3 /确保webserver用户也可以读取当前的存储库文件。这些例子来自基于debian的系统,所以YMMV:

$projectroot = "/home/git/repositories";
...
$projects_list = "/home/git/projects.list";

4 /最后在客户端计算机的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 存储库的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 3.6.6和gitolite 2.1.4