我正在尝试在 CentOS Linux 上设置 gitlist(如果有问题,请使用 gitolite ——我已经放宽了 gitolite 管理的 repo 目录的权限)。
我从今天的 gitlist.org 中提取了 0.3 版 tarball。
我的 config.ini 看起来像这样:
client = '/usr/bin/git' ; Your git executable path
repositories = '/home/gitolite/repositories/' ; Path to your repositories
[app]
debug = true
; I don't know if baseurl is still needed..seems like my results are the same either way
baseurl = 'http://sub.example.com.com/gitlist' ; Base URL of the application
httpd.conf 中的虚拟主机指令:
<VirtualHost *:80>
DocumentRoot /var/www/html
ServerName sub.example.com
<Directory "/var/www/html">
AllowOverride All
Options -Indexes
</Directory>
</VirtualHost>
访问:
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteBase /var/www/html/gitlist/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [L,NC]
AuthName "Git List"
AuthType Basic
AuthUserFile /var/www/.gitlistpwds
Require valid-user
</IfModule>
<Files config.ini>
order allow,deny
deny from all
</Files>
使用此设置,转到http://sub.example.com/gitlist会导致浏览器错误消息显示 /index.php 不存在(即它正在尝试转到 /var/www/html/index.php )
在这种情况下,如果我访问http://sub.example.com/gitlist/index.php,存储库列表(显然)会正确显示。当我单击其中一个存储库时,当它尝试执行时出现问题,git。我得到:
Whoops, looks like something went wrong.
1/1 RuntimeException: Unknown option: -c
(std git usage message omitted)
如果我从 .htaccess 中删除重写规则,我可以通过指定 index.php 或不指定来访问索引页面。但是在那种情况下,当我点击一个 repo 时,它会尝试在 gitlist 目录下找到 repo:
The requested URL /gitlist/testing.git/ was not found on this server.
有人可以帮忙解决这个烂摊子吗?