Vielen Dank an Juergen (juergensa) für die folgende Anleitung!
Â
Mercurial Repository Zugriffskontrolle mittels hgwebdir.cgi und Redmine User-Datenbank¶
Authentifizierung¶
Der http Web Zugriff auf Mercurial Repositorys kann normalerweise durch das Skript hgwebdir.cgi und durch die Repository Datei .hg/hgrc gesteuert werden. Eine gezielte Authentifizierung kann jedoch auch mittels der Redmine User-Datenbank gesteuert werden. Es erhalten dann nur Redmine-Benutzer Zugriff, welche dem Projekt-Repository zugewiesen sind. Öffentliche Projekt-Repositorys sind ohne Authentifizierung lesbar.
Es ist jedoch zu beachten, dass hierfür der Verzeichnisname des Repositorys und die Kennung des entsprechenden Redmine Projektes identisch sein müssen! (s. Abb. 1 und 2)
Â

Abb. 1
Â

Abb. 2
Redmine.pm
Für die Authentifizierung muss Apache ein Perl-Skript aufrufen.
Verlinkung des Skriptes Redmine.pm in das Perl-Verzeichnis:
# ln -s /var/www/redmine/extra/svn/Redmine.pm /usr/lib/perl5/Apache/Redmine.pm
hgwebdir¶
Das Skript hgwebdir.cgi finden, bei mir liegt es unter /usr/share/doc/mercurial-common/examples/hgwebdir.cgi, und in ein Verzeichnis nahe der Mercurial Reposirorys kopieren (z.B. /var/share/hg/webdir/)
Bei mir sind die Repositorys unter /var/share/hg/reps/ zu finden.
# cp /usr/share/doc/mercurial-common/examples/hgwebdir.cgi /var/share/hg/webdir # chmod +x /usr/share/doc/mercurial-common/examples/hgwebdir.cgi
Â
Weitere Infos zu hgwebdir.cgi
Konfiguration von hgwebdir durch die Datei hgweb.config
# cd /path/to/hgwebdir.cgi/ # nano hgweb.config
einfügen:
[collections] /path/to/the/repos=/path/to/the/repos [web] encoding = utf-8 style = paper
Â
Dann noch den Rechte-Besitzer auf alle Dateien und auf das Verzeichnis auf www-data setzen
# chown -R www-data:www-data /path/to/hgwebdir.cgi/
Â
Apache¶
Anpassen der Apache Host Konfiguration /etc/apache2/sites-available/redmine.sheevaplug.loc
Über den Link http://redmine.sheevaplug.loc/hg/repository_name kann dann z.B. auf das Mercurial Repository 'repository_name' zugegriffen werden.
# nano /etc/apache2/sites-available/redmine.sheevaplug.loc
einfügen:
<virtualhost *:80>
ServerName redmine.sheevaplug.loc
RewriteEngine on
DocumentRoot /var/www/redmine/public
<directory /var/www/redmine/public>
AllowOverride all
Options FollowSymLinks -MultiViews
</directory>
PerlLoadModule Apache::Redmine
ScriptAliasMatch ^/hg(.*) /var/share/hg/webdir/hgwebdir.cgi/$1
<Location /hg>
AuthType Basic
AuthName "Mercurial"
Require valid-user
#Redmine auth
PerlAccessHandler Apache::Authn::Redmine::access_handler
PerlAuthenHandler Apache::Authn::Redmine::authen_handler
RedmineDSN "DBI:mysql:database=redmine;host=localhost"
RedmineDbUser "DB_USER"
RedmineDbPass "DB_PASSWORD"
</Location>
</virtualhost>
ScriptAliasMatch Pfad, RedmineDbUser und RedmineDbPass an die eigenen Redmine Datenbankdaten anpassen
Falls noch nicht geschehen noch schnell mod_perl aktivieren
# a2enmod perl
und auf jeden Fall Apache neu starten
# /etc/init.d/apache2 restart
Â
Beispielzugriff
Über den Link http://redmine.sheevaplug.loc/hg/repository_name kann nun z.B. auf EIN Mercurial Repository 'repository_name' zugegriffen werden.
# hg clone http://redmine.sheevaplug.loc/hg/repository_name
Â
HG Push¶
Soll ein Mercurial Repository auch gepusht werden können, muss die Repository Datei .hg/hgrc noch angepasst werden.
Weil noch keine SSL Verbindung verwendet wird, muss dieses auch berücksichtigt werden.
Datei hgRepository/.hg/hgrc auf SheevaPlug
[web] allow_push = * push_ssl = False encoding = UTF-8
Â
buy ialis online from india cialis online no prescription - millpharmacy.com buy cialis no prescription canada





