【问题标题】:How do I have to configure gitweb and gitolite so they'll work together?我如何配置 gitweb 和 gitolite 以便它们一起工作?
【发布时间】:2011-08-27 17:33:37
【问题描述】:

我正在尝试使 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


    【解决方案1】:

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

    【讨论】:

    • 为了更加安全,您可以将 apache/www-data 用户添加到 gitolite 组 usermod -a -G gitolite apache,然后执行 chmod -R 750 /home/git/repositories 并设置 gitolite 变量 $REPO_UMASK = 0027;
    • $REPO_UMASK 设置对我特别有用。 chmod-ing 存储库目录一直有效,直到您下次更新存储库,然后其中一个文件的权限被重置为 700。请注意,如果您想运行 gitweb,文档说 gitolite 中的 UMASK 设置至关重要:gitolite.com/gitolite/g2/rc.html
    • 检查您的 cmd chmod -R 775 /home/git/repositories:用户获得完全访问权限,组也和其他人读取和执行。为什么这么慷慨? curl localhost:1234 出现 500 错误并且有 755。更改为 775 没有帮助。
    【解决方案2】:

    您需要在/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_rightsgitolite.pm的一个方法)

    检查“helping with gitweb”部分。

    您需要在gitweb_config.perl 末尾添加的最后一行是:

    use lib (".");
    require "gitweb.conf.pl";
    

    这样,您将避免任何“500 - Internal Server Error syntax error at /etc/gitweb.conf”错误消息。

    如果您没有在其中声明gitweb.conf.plgitweb_config.perl,而是直接“gitweb.conf.pl”,则添加“use lib (".");”作为该文件的第一行。

    【讨论】:

    • 在 /etc/gitweb.conf 的末尾我需要添加哪一行?我尝试添加这一行: $/home/git/gitolite/contrib/gitweb.conf ,但这会产生错误。我想我误解了。
    • 我做的事情很明显是错误的。我的 gitweb.conf、projects.list、.gitolite.rc 设置正确吗?错误消息清楚地显示:未找到项目。
    • @Jee:在/etc/gitweb.conf的末尾,你需要复制github.com/sitaramc/gitolite/blob/pu/contrib/gitweb/gitweb.conf所有行(并更改第21、23、..行的值) . 如果您在 Gitolite 安装中使用了不同的路径)
    • 我在网页上收到以下错误(gitweb 似乎不理解这些新行,它在第一行给出语法错误):500 - /etc/gitweb.conf 处的内部服务器错误语法错误第 74 行,靠近“我的”
    • @Jee:我已经更新了我的答案以避免任何“语法错误”消息。
    【解决方案3】:

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

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

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

    $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/ 最后在客户端机器上的gitolite-admin 存储库的/conf/gitolite.conf 文件中为gitweb 用户配置访问权限,并通过提交和推送它们(标准方式)来应用它们。我们希望通过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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-02
      • 2010-11-18
      • 1970-01-01
      • 2012-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多