Hallo,

wir setzen OpenProject (Fork Chiliproject/Redmine) ein und nutzen unter anderem 
das SVN Plugin. Das Plugin erzeugt für jeden Studenten (sofern er ein Projekt 
erzeugt, welches SVN aktiviert hat) ein Verzeichnis:

/opt/op/svn/repositories/$username/$username-$projektname

Das ermöglicht uns einen besseren Überblick zu bewahren, wenn der Student 
mehrere SVN Projekte erzeugt.

Das Problem ist nun, dass SVNPATH / SVNParentPATH jeweils nur statisch sind und 
damit ein Aufruf der URL:

https://svn.example.de/svn/foobar/foobar-myproject

ins Leere läuft, da das svn_dav Modul nun die "format" Datei physisch unter:

(bei SVNPATH)
/opt/op/svn/repositories/

(bei SVNParentPATH)
/opt/op/svn/repositories/foobar

erwartet.

Korrekterweise müsste SVNPATH aber "/opt/op/svn/repositories/foobar" lauten, 
was nicht funktioniert, da wir:

a) nicht wissen, welche Studenten SVN (statt git) nutzen
b) es zu viele wären -> 500-1500 User

ich habe schon diverses ausprobiert ... aber letzten Endes hat nichts geholfen. 
 Eine Idee war diese hier:

http://serverfault.com/questions/230253/mixing-subversion-svnparentpath-and-per-repository-configurations

aber auch da muss ich irgendwie den Benutzernamen in SVNPath bekommen. 

Wie schaffe ich es also $auth_name mit dem passenden Wert zu füllen?

Die Authentifikation erfolgt über Radius.

=====================
[...]

<Macro SubversionRepo >
<Location /svn/>
 DAV svn
 SVNPath "/opt/op/svn/repositories/$auth_name"
 Deny from all
 Satisfy any

   PerlAccessHandler Apache::Authn::OpenProject::access_handler
#   PerlAuthenHandler Apache::Authn::OpenProject::authen_handler
   OpenProjectApiKey 'secret'
   OpenProjectUrl      'https://scm.example.com'

<Macro GetValidUser $auth_name>
 AuthType Basic
 AuthName "$auth_name"
       AuthBasicAuthoritative Off
       AuthBasicProvider radius
       AuthRadiusAuthoritative on
       AuthRadiusActive On
       require valid-user
</Macro>

Use GetValidUser "Informatik SVN Repository"

    #read-only access
    <Limit GET PROPFIND OPTIONS REPORT>
       Require valid-user
       Allow from 127.0.0.1
     </Limit>
    # write access
    <LimitExcept GET PROPFIND OPTIONS REPORT>
      Require valid-user
    </LimitExcept>
</Location>
</Macro>

Use SubversionRepo
</VirtualHost>
==============

wie gesagt, ich experimentiere da gerade sehr ... 

Ziel soll es sein, dass SVNParentPath passend erweitert wird. Eine URL sieht so 
aus:

https://svn.example.de/svn/foobar/foobar-myproject

SVNPath muss dann also /opt/op/svn/repositories/$auth_name/foobar-myproject 
lauten.

Hat jemand da eine Idee?

cu denny

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

Antwort per Email an