Subversion einrichten, TortoiseSVN und Web-Zugriff

Hallo und Frohe Ostern.

Ich bin dabei Subversion (bzw. SVNServe) unter Suse 10.3 einzurichten. Ich habe mich genau an die Anleitung gehalten, die in den SVN Dateien mit bei ist:
Topics:

  1. backup and restore your repository data
  2. create svn user/group for svnserve
  3. mini-howto for 2 projects

================================================================================

  1. backup and restore your repository data

subversion repositories use either the Berkeley Database system libraries,
or the FSFS database format which comes with the subversion package.
Since the BDB system libraries often introduce a new incompatible format during
version upgrade, a backup/restore of all the subversion repositories must be
performed _BEFORE_ doing such a system upgrade.
‚svnadmin dump‘ will write the repository to stdout in a ‚dumpfile‘ format.
This dumpfile can be loader later with ‚svnadmin load‘.

  1. create svn user/group for svnserve

subversion repositories can be served either via http, or via the svnserve
daemon and a special network protocol. svnserve should not run as root user.
The startup script rcsvnserve expects a user/group named ‚svn‘, configureable
via /etc/sysconfig/svnserve.
But this user/group must be created before first use:

useradd svn
groupadd svn

  1. mini-howto for 2 projects

To run a subversion server, you need to configure apache2 to load two apache2
modules: mod_dav and mod_dav_svn. (mod_dav is needed by mod_dav_svn, it is
installed together with apache2.)

This is done by adding the dav and dav_svn modules to the apache2 configuration
(a2enmod dav; a2enmod dav_svn), and restarting the server.

A default/example configuration of the dav_svn module can be found in
/etc/apache2/conf.d/subversion.conf. With more recent apache
packages, this configuration is *not* loaded automatically by
the apache server, since many people configure virtual hosts
and it is unlikely that the repositories shall be available
from any virtual host. To load the configuration for a certain
virtual host, add
Include /etc/apache2/conf.d/subversion.conf
or
Include /path/to/your_subversion_configuration
in the respective virtual host configuration. This *may* be done in the default
virtual host (/etc/apache2/default-server.conf).

Minihowto:

The plan:

host 2 source projects with subversion
both must have anonymous read access
both must have limited write access for a few users
they are accessed only via HTTP, not (!) locally
they will be reachable via:

http://hostname/repos/project1
http://hostname/repos/project2

Both will have the official version of the source tree and our modified
version for the distribution. Projects in question are:
project1
project2

The realisation:

find a machine to host the projects. Keep backup (and restore!) in mind
when hunting for hardware.

install needed packages
(you might check for update packages on
ftp://ftp.suse.com/pub/projects/apache/ )

rpm -Uvh \
apache2 \
apache2-doc \
apache2-prefork \
libapr1 \
libapr-util1 \
neon \
subversion \
subversion-doc \
subversion-server

Update /etc/sysconfig/apache2 by

adding ‚dav dav_svn‘ to $APACHE_MODULES:

a2enmod dav
a2enmod dav_svn

create a few directories:
mkdir -p /srv/svn/repos
mkdir -p /srv/svn/user_access
mkdir -p /srv/svn/html

Add the http repository data to /etc/apache2/conf.d/subversion.conf:
#------------------------------------------------------------------------

project related HTML files

Alias /repos „/srv/svn/html“

Options +Indexes +Multiviews -FollowSymLinks
IndexOptions FancyIndexing \
ScanHTMLTitles \
NameWidth=* \
DescriptionWidth=* \
SuppressLastModified \
SuppressSize

order allow,deny
allow from all

project repository files for project1

DAV svn
SVNPath /srv/svn/repos/project1

Limit write access to certain people

AuthType Basic
AuthName „Authorization for project1 required“
AuthUserFile /srv/svn/user_access/project1_passwdfile
AuthGroupFile /srv/svn/user_access/project1_groupfile

Require group project1_committers

Limit read access to certain people

Require group project1_committers
Require group project1_readers

project repository files for project2

DAV svn
SVNPath /srv/svn/repos/project2

Limit write permission to list of valid users.

Require SSL connection for password protection.

SSLRequireSSL

AuthType Basic
AuthName „Authorization for project2 required“
AuthUserFile /srv/svn/user_access/project2_passwdfile
Require valid-user

#------------------------------------------------------------------------

create the repositories itself:
cd /srv/svn/repos
svnadmin create project1
chown -R wwwrun:www project1/{dav,db,locks}
svnadmin create project2
chown -R wwwrun:www project2/{dav,db,locks}

The webserver must be (re)started:
rcapache2 restart

Now create the user access files:
project1 is a restricted project.
read access requires a password
write access is limited to a few users
touch /srv/svn/user_access/project1_passwdfile
chown root:www /srv/svn/user_access/project1_passwdfile
chmod 640 /srv/svn/user_access/project1_passwdfile

htpasswd2 /srv/svn/user_access/project1_passwdfile olaf
htpasswd2 /srv/svn/user_access/project1_passwdfile olh

this is the group file for project1:
/srv/svn/user_access/project1_groupfile
content:
project1_committers: olh
project1_readers: olaf olh

project2 is world readable, but only a few can commit to the sources.
touch /srv/svn/user_access/project2_passwdfile
chown root:www /srv/svn/user_access/project2_passwdfile
chmod 640 /srv/svn/user_access/project2_passwdfile
htpasswd2 /srv/svn/user_access/project2_passwdfile olaf

You should be able to connect to the server:
http://host/repos/project2
http://host/repos/project1

Now import the data, e.g.
svn import /path/to/project2-tree http://host/repos/project2

Doch ich kann weder über TortoiseSVN mittels SVN://host/repos…
zugreifen und auch der Webzugriff über http://host/repos/project1 http://host/repos/project2 funktioniert nicht wie in der Anleitung beschrieben.

Ich kenn mich mit Suse und Apache nicht wirklich gut aus, an welchen Dateien kann es liegen das der Zugriff verweigert wird?

Gibt es irgendwo im Netz eine Schritt für Schritt-Anleitung für Dummies?

Am verzweifeln bin…

Hallo und Frohe Ostern.

auch schönen freitag

Ich bin dabei Subversion (bzw. SVNServe) unter Suse 10.3
einzurichten. Ich habe mich genau an die Anleitung gehalten,

.
.
.

Doch ich kann weder über TortoiseSVN mittels
SVN://host/repos…
zugreifen und auch der Webzugriff über
http://host/repos/project1 http://host/repos/project2
funktioniert nicht wie in der Anleitung beschrieben.

Ich kenn mich mit Suse und Apache nicht wirklich gut aus, an
welchen Dateien kann es liegen das der Zugriff verweigert
wird?

Gibt es irgendwo im Netz eine Schritt für Schritt-Anleitung
für Dummies?

Am verzweifeln bin…

Tja, erstmal ist es suse, damit hat man schonmal eine hürde, keine standard pfade.

zweitens hoffe ich du hast alles möglichst mit yast installiert.

drittens muss du nun in die einzelnen error logs gugen bzw access logs , wo der hacken ist, firewall etc .

Tja , für dummies gibts nur, bezahlen , alles andere macht der Fachmann. Viel spass , aber wenn du glüc hast gehts irgentwann.
Ich hab auch nur minimale fehler gehabt und dennoch am ende wird alles gut. :smile:

Die anleitungen sagen das richtige, solange du weisst was du alles amchen musst und was schon alles da war, und wichtig, womit du was machst , gerade bei Suse .

guss aus debianhausen :smile:

Hallo!

Mit YAST hab ich alles notwendige installiert. Die Anleitung verstehe ich auch. Soll heißen ich kann jeden Schritt ohne Probleme durchführen. Dennoch klappts nicht.
Ich hab das Gefühl, das mir irgendeine Datei den Zugriff verweigert. Mittlerweile sehe ich über TortoiseSVN wenigstens die Dateien im Repository, doch ich kann nicht committen. Da bekomme ich immer den Fehler „Authorization failed“. Habe mich auch mit der Password und Authz-Datei des Repos auseinandergesetzt sowie mit der svnserve.conf

Was mich wundert ist vor allem: wenn ich über „htpasswd2 /pfad/zur/passwd/datei user“ das Password setze, dann steht auch nur dieses in der Datei. TortoiseSVN zeigt mir dann aber einen Fehler das die Header-Section in der Datei fehlt. [users] über den Dateien fehlt also. Auch wenn ich dies manuell nachtrage funktioniert der Zugriff nicht.

ok, dann braucht es mal einen post deiner svnserve.conf

ansonsten schau mal da http://www.svnforum.org/2017/viewtopic.php?t=2427
und
http://forum.ubuntuusers.de/topic/subclipse-meldet-a…

kann also noch an viel viel vielem liegen …

svnserve.conf :

##start
[general]
anon-access = read
auth-access = write
password-db = passwdfile
authz-db = authz
realm = My First Repository
##ende

so ist auch der standard wenn ich nicht ganz doof bin :smiley:

passwdfile:

##start
[users]
user1:stuck_out_tongue:assword1
user2:stuck_out_tongue:assword2
##ende

(hier bin ich auf zwei Schreibweisen gestoßen. Einmal user und password durch Doppelpunkt getrennt, einmal durch gleichheitszeichen. ("=")
Funktioniert aber mit beiden nicht ^^

authz:

[groups]
gruppe = user1,user2

[/project1]
user1 = rw
* =

[srv/svn/repos/project1]
user1 = rw
* =

[/]
@gruppe = rw
* = r

Im TortoiseSVN wurde ich kurioser Weise noch nie nach einem Passwort gefragt…

svnserve.conf :

##start
[general]
anon-access = read

anon-access = none

, schreibfehler

anon-access = none

, schreibfehler

und nochmal wegen dem passwort file

To add the first entry, ie… to add the first user, you can run the following command:

sudo htpasswd -c /etc/subversion/passwd user_name

It prompts you to enter the password. Once you enter the password, the user is added.

To add more users after that, you can run the following command:

sudo htpasswd /etc/subversion/passwd second_user_name

If you are uncertain whether the passwd file exists, running the command below will tell you whether the file already exists:

cat /etc/subversion/passwd

Now, to access the repository you can run the following command:

$ svn co http://hostname/svn/myproject myproject --username user_name

also mal testen via shell :smile:

Hallo! Und danke erstmal für deine Hilfe!

Also ich habe die Dateien jetzt deiner Anleitung nach angepasst. Via Shell funktioniert es. Dateien werden ausgecheckt über
$ svn co file:///srv/svn/repos/project1 --username user1

allerdings nur mit dem file://-Parameter. Wenn ich http://IP-Adresse/srv/svn/repos/project1 ausführe, kommt der Fehler „405 Method Not Allowed (http://)“.

In TortoiseSVN verhält es sich nun wieder wie im Ausgangsthread schonmal beschrieben. Ich erhalte beim Commit-Versuch den Fehler /pfad/zum/passwdfile:1: Section header expected.

Da fiel mir nun auch auf, dass ich das Password über
$ htpasswd -c /pfad/zur/datei gar nicht erstellen kann, der Befehl wird nicht erkannt.

Es funktioniert nur über $ htpasswd2 -c /pfad/zur/datei
Also mit der „2“ hinter htpasswd.

Ich würd mich riesig freuen, wenn du noch ne Idee und vor allem Ausdauer mit mir hast :smiley:

Ha. Nochwas.
Wenn ich jetzt wie schonmal gesagt, in die Passwd-Datei ein [Users] ganz oben einfüge (header section expected…) dann werde ich von TortoiseSVN beim Commit nach einem Nutzer und Password gefragt. Allerdings werden meine Eingaben nicht als richtig erkannt. Also ich gebe den richtigen user/passwd ein, aber das Eingabefeld erscheint einfach wieder erneut.

Hallo nochmal! Also mittlerweile werde ich von Tortoise nach Nutzer und Password gefragt, und siehe da es funktioniert auch aufeinmal. Alles bis auf COMMIT… Naja schade, dass dies nu gerade eine nicht unwichtige Funktion ist. Update, Checkout alles kein Prob. Beim Commit heißt es wieder Authorization failed…