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

问题描述 投票:12回答:3

我试图让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错误说 - 找不到存储库。

git gitolite gitweb
3个回答
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

0
投票

你需要在Gitolite contrib/gitweb.conf的末尾添加/etc/gitweb_config.perl。 换句话说,你需要从你的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 (".");”作为该文件的第一行。


0
投票

1 /安装gitolite并进行设置。然后,确保/home/git/.gitolite.rc包含看起来像这样的未注释部分就足够了:

%RC = (
    ...
    UMASK                           =>  0027,
    ...
    ENABLE => [
        ...
        'gitweb',
        ...
     ]
);

2 /正确设置$projectroot$projects_list/etc/gitweb.conf指令(以匹配projects.list文件和repositories目录的位置)。喜欢:

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

3 /确保Webserver用户也可以读取当前存储库文件。这些例子来自基于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`

注意:...仅建议文件中还有其他配置指令。不要把它们放在那里!

没有其他变化是必要的,以使qazxsw poi可视化qazxsw poi存储库。

适用于(至少)gitlab 3.6.6和gitolite 2.1.4

© www.soinside.com 2019 - 2024. All rights reserved.