Мне удалось успешно настроить Redmine с предварительной интеграцией с git. Однако мне очень интересно комбинировать cgit с текущими конфигами, но я не уверен, как это сделать. Итак, в основном я хочу использовать cgit с аутентификацией из Redmine, объединив эти две конфигурации.
Вот мои рабочие конфиги (будут работать, только если я отключу один из них):
cgit config:
<VirtualHost *:80>
ServerName git.domain
DocumentRoot "/var/www/htdocs/cgit/"
DirectoryIndex cgit.cgi
SetEnv CGIT_CONFIG /etc/cgitrc
<Directory "/var/www/htdocs/cgit">
Options FollowSymlinks ExecCGI
Allow from all
AllowOverride all
Order allow,deny
<Files cgit.cgi>
SetHandler cgi-script
</Files>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.* /cgit.cgi/$0 [L,PT]
</Directory>
<Directory "/opt/git">
Allow from all
</Directory>
</VirtualHost>
Для аутентификации Git через Redmine:
<VirtualHost *:80>
ServerName git.domain
DocumentRoot /opt/git
SetEnv GIT_PROJECT_ROOT /opt/git
SetEnv GIT_HTTP_EXPORT_ALL
SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER
ScriptAlias / /usr/lib/git-core/git-http-backend/
AliasMatch ^/(.*/objects/[0-9a-f]{2}/[0-9a-f]{38})$ /opt/git/$1
AliasMatch ^/(.*/objects/pack/pack-[0-9a-f]{40}.(pack|idx))$ /opt/git/$1
PerlLoadModule Apache::Redmine
ScriptAliasMatch \
"(?x)^/(.*/(HEAD | \
info/refs | \
objects/(info/[^/]+ | \
[0-9a-f]{2}/[0-9a-f]{38} | \
pack/pack-[0-9a-f]{40}\.(pack|idx)) | \
git-(upload|receive)-pack))$" \
/usr/lib/git-core/git-http-backend/$1
<Directory /usr/libexec/git-core/>
Options +ExecCGI
Allow From All
</Directory>
<Location "/">
AuthType Basic
AuthName "Git Repositories"
Require valid-user
PerlAccessHandler Apache::Authn::Redmine::access_handler
PerlAuthenHandler Apache::Authn::Redmine::authen_handler
RedmineDSN "DBI:mysql:database=redmine;host=localhost"
RedmineDbUser "redmine"
RedmineDbPass "redmine password"
RedmineGitSmartHttp yes
</Location>
</VirtualHost>