Accepting request 176301 from devel:tools:scm:svn
- use svnserveautocheck.sh and davautocheck.sh for unit tests, greatly reducing complexity of spec file and adding support for running unit tests with httpd 2.4 in factory - add subversion-1.7.9-davautocheck-LD_LIBRARY_PATH.patch to not overwrite LD_LIBRARY_PATH in davautocheck.sh to make auth-test pass (forwarded request 176300 from AndreasStieger) OBS-URL: https://build.opensuse.org/request/show/176301 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/subversion?expand=0&rev=98
This commit is contained in:
commit
e5d1d6a6b0
48
subversion-1.7.9-davautocheck-LD_LIBRARY_PATH.patch
Normal file
48
subversion-1.7.9-davautocheck-LD_LIBRARY_PATH.patch
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
From: Andreas Stieger <andreas.stieger@gmx.de>
|
||||||
|
Date: 2013-05-21 17:43:00 +0100
|
||||||
|
Subject: [PATCH] do not clear LD_LIBRARY_PATH in davautocheck.sh
|
||||||
|
Upstream: merged
|
||||||
|
References: http://svn.apache.org/viewvc?view=revision&revision=1197065
|
||||||
|
|
||||||
|
During "make check", auth-test loads DSOs at runtime and cannot find them
|
||||||
|
unless LD_LIBRARY_PATH inlucdes subversion/libsvn_auth_kwallet/.libs and
|
||||||
|
/subversion/libsvn_auth_gnome_keyring/.libs.
|
||||||
|
|
||||||
|
Adjust davautocheck.sh so that LD_LIBRARY_PATH is prepended to rather
|
||||||
|
than overwritten so that the spec file can set the required paths for
|
||||||
|
the auth-tests to pass.
|
||||||
|
|
||||||
|
Actually then found to have been fixed in the trunk in r1197065. Required
|
||||||
|
for unit tests with 1.7.x but not 1.8.x
|
||||||
|
|
||||||
|
---
|
||||||
|
subversion/tests/cmdline/dav-mirror-autocheck.sh | 2 +-
|
||||||
|
subversion/tests/cmdline/davautocheck.sh | 2 +-
|
||||||
|
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
Index: subversion-1.7.9/subversion/tests/cmdline/dav-mirror-autocheck.sh
|
||||||
|
===================================================================
|
||||||
|
--- subversion-1.7.9.orig/subversion/tests/cmdline/dav-mirror-autocheck.sh 2011-04-21 12:42:32.000000000 +0100
|
||||||
|
+++ subversion-1.7.9/subversion/tests/cmdline/dav-mirror-autocheck.sh 2013-05-21 20:32:40.000000000 +0100
|
||||||
|
@@ -323,7 +323,7 @@ fi
|
||||||
|
[ -r "$MOD_AUTHZ_SVN" ] \
|
||||||
|
|| fail "authz_svn_module not found, please use '--enable-shared --enable-dso --with-apxs' with your 'configure' script"
|
||||||
|
|
||||||
|
-export LD_LIBRARY_PATH="$ABS_BUILDDIR/subversion/libsvn_ra_neon/.libs:$ABS_BUILDDIR/subversion/libsvn_ra_local/.libs:$ABS_BUILDDIR/subversion/libsvn_ra_svn/.libs"
|
||||||
|
+export LD_LIBRARY_PATH="$ABS_BUILDDIR/subversion/libsvn_ra_neon/.libs:$ABS_BUILDDIR/subversion/libsvn_ra_local/.libs:$ABS_BUILDDIR/subversion/libsvn_ra_svn/.libs:$LD_LIBRARY_PATH"
|
||||||
|
|
||||||
|
MASTER_REPOS="${MASTER_REPOS:-"$HTTPD_ROOT/master_repos"}"
|
||||||
|
SLAVE_REPOS="${SLAVE_REPOS:-"$HTTPD_ROOT/slave_repos"}"
|
||||||
|
Index: subversion-1.7.9/subversion/tests/cmdline/davautocheck.sh
|
||||||
|
===================================================================
|
||||||
|
--- subversion-1.7.9.orig/subversion/tests/cmdline/davautocheck.sh 2012-05-13 05:03:03.000000000 +0100
|
||||||
|
+++ subversion-1.7.9/subversion/tests/cmdline/davautocheck.sh 2013-05-21 20:32:40.000000000 +0100
|
||||||
|
@@ -198,7 +198,7 @@ fi
|
||||||
|
[ -r "$MOD_AUTHZ_SVN" ] \
|
||||||
|
|| fail "authz_svn_module not found, please use '--enable-shared --enable-dso --with-apxs' with your 'configure' script"
|
||||||
|
|
||||||
|
-export LD_LIBRARY_PATH="$ABS_BUILDDIR/subversion/libsvn_ra_neon/.libs:$ABS_BUILDDIR/subversion/libsvn_ra_local/.libs:$ABS_BUILDDIR/subversion/libsvn_ra_svn/.libs"
|
||||||
|
+export LD_LIBRARY_PATH="$ABS_BUILDDIR/subversion/libsvn_ra_neon/.libs:$ABS_BUILDDIR/subversion/libsvn_ra_local/.libs:$ABS_BUILDDIR/subversion/libsvn_ra_svn/.libs:$LD_LIBRARY_PATH"
|
||||||
|
|
||||||
|
case "`uname`" in
|
||||||
|
Darwin*) LDD='otool -L'
|
@ -1,2 +0,0 @@
|
|||||||
jrandom:xCGl35kV9oWCY
|
|
||||||
jconstant:xCGl35kV9oWCY
|
|
@ -1,33 +0,0 @@
|
|||||||
Listen 127.0.0.1:REPLACE_PORT
|
|
||||||
ServerName tests.example.com
|
|
||||||
ErrorLog ./error_log
|
|
||||||
PidFile ./httpd.pid
|
|
||||||
LoadModule auth_basic_module REPLACE_APACHE_LIBEXECDIR/mod_auth_basic.so
|
|
||||||
LoadModule authn_file_module REPLACE_APACHE_LIBEXECDIR/mod_authn_file.so
|
|
||||||
LoadModule alias_module REPLACE_APACHE_LIBEXECDIR/mod_alias.so
|
|
||||||
LoadModule dav_module REPLACE_APACHE_LIBEXECDIR/mod_dav.so
|
|
||||||
LoadModule dav_svn_module REPLACE_BUILDROOTREPLACE_APACHE_LIBEXECDIR/mod_dav_svn.so
|
|
||||||
LoadModule authz_svn_module REPLACE_BUILDROOTREPLACE_APACHE_LIBEXECDIR/mod_authz_svn.so
|
|
||||||
|
|
||||||
<Location /svn-test-work/repositories>
|
|
||||||
DAV svn
|
|
||||||
SVNParentPath REPLACE_BUILDDIR/subversion/tests/cmdline/svn-test-work/repositories
|
|
||||||
AuthzSVNAccessFile REPLACE_BUILDDIR/subversion/tests/cmdline/svn-test-work/authz
|
|
||||||
AuthType Basic
|
|
||||||
AuthName "Subversion Repository"
|
|
||||||
AuthUserFile REPLACE_BUILDDIR/users
|
|
||||||
Require valid-user
|
|
||||||
</Location>
|
|
||||||
|
|
||||||
<Location /svn-test-work/local_tmp/repos>
|
|
||||||
DAV svn
|
|
||||||
SVNPath REPLACE_BUILDDIR/subversion/tests/cmdline/svn-test-work/local_tmp/repos
|
|
||||||
AuthzSVNAccessFile REPLACE_BUILDDIR/subversion/tests/cmdline/svn-test-work/authz
|
|
||||||
AuthType Basic
|
|
||||||
AuthName "Subversion Repository"
|
|
||||||
AuthUserFile REPLACE_BUILDDIR/users
|
|
||||||
Require valid-user
|
|
||||||
</Location>
|
|
||||||
|
|
||||||
RedirectMatch permanent ^/svn-test-work/repositories/REDIRECT-PERM-(.*)$ /svn-test-work/repositories/$1
|
|
||||||
RedirectMatch ^/svn-test-work/repositories/REDIRECT-TEMP-(.*)$ /svn-test-work/repositories/$1
|
|
@ -1,220 +1,175 @@
|
|||||||
|
Quickstart document for Apache Subversion on openSUSE.
|
||||||
|
|
||||||
|
For the full documentation, install the package subversion-doc and see
|
||||||
|
/usr/share/doc/packages/subversion/html/book/svn-book.html
|
||||||
|
An online version can be found at http://svnbook.red-bean.com/
|
||||||
|
|
||||||
Topics:
|
Topics:
|
||||||
|
|
||||||
1. backup and restore your repository data
|
1. mini-howto
|
||||||
2. create svn user/group for svnserve
|
2. allowing anonymous read access
|
||||||
3. mini-howto for 2 projects
|
3. serving several repositories with SVNParentPath
|
||||||
4. quickstart for mod_dontdothat
|
4. serving the repositories at "/"
|
||||||
|
5. running svnserve
|
||||||
|
6. quickstart for mod_dontdothat
|
||||||
|
|
||||||
================================================================================
|
================================================================================
|
||||||
|
|
||||||
1. backup and restore your repository data
|
1. mini-howto
|
||||||
|
|
||||||
subversion repositories use either the Berkeley Database system libraries,
|
To run a subversion server, you need to configure apache2 to load two modules:
|
||||||
or the FSFS database format which comes with the subversion package.
|
mod_dav and mod_dav_svn.
|
||||||
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 loaded later with 'svnadmin load'.
|
|
||||||
|
|
||||||
|
zypper in subversion-server
|
||||||
2. create svn user/group for svnserve
|
a2enmod dav
|
||||||
|
a2enmod dav_svn
|
||||||
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:
|
|
||||||
|
|
||||||
groupadd svn
|
|
||||||
useradd -d /srv/svn -s /bin/false -g svn svn
|
|
||||||
|
|
||||||
|
|
||||||
3. 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
|
A default/example configuration of the dav_svn module can be found in
|
||||||
/etc/apache2/conf.d/subversion.conf. With more recent apache
|
/etc/apache2/conf.d/subversion.conf. The current default configuration
|
||||||
packages, this configuration is *not* loaded automatically by
|
automatically includes this file the default server configuration.
|
||||||
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).
|
|
||||||
|
|
||||||
|
Create some directories to contain the repositories and other files:
|
||||||
|
|
||||||
|
mkdir -p /srv/svn/repos
|
||||||
|
mkdir -p /srv/svn/user_access
|
||||||
|
mkdir -p /srv/svn/html
|
||||||
|
|
||||||
Minihowto:
|
Edit /etc/apache2/conf.d/subversion.conf and uncomment the desired sections.
|
||||||
|
|
||||||
|
The first section "project related HTML files" is optional and will allow you
|
||||||
|
to return some static content when /repos is accessed alone. If you do not need
|
||||||
|
this, discard this section.
|
||||||
|
|
||||||
The plan:
|
If instead you wish to show a list of repositories, set "SVNListParentPath on"
|
||||||
|
later. See for details:
|
||||||
|
http://svnbook.red-bean.com/en/1.7/svn.serverconfig.httpd.html#svn.serverconfig.httpd.extra.browsing.reposlisting
|
||||||
|
|
||||||
host 2 source projects with subversion
|
The section following that will configure a repository to be served out of
|
||||||
both must have anonymous read access
|
the path /srv/svn/repos/myproject1. Note that the location "/repo/myproject1"
|
||||||
both must have limited write access for a few users
|
and "SVNPath" is specified explicitly, see section 3 for an alternative.
|
||||||
they are accessed only via HTTP, not (!) locally
|
|
||||||
they will be reachable via:
|
|
||||||
|
|
||||||
http://hostname/repos/project1
|
To create the repository itself:
|
||||||
http://hostname/repos/project2
|
|
||||||
|
|
||||||
Both will have the official version of the source tree and our modified
|
cd /srv/svn/repos
|
||||||
version for the distribution. Projects in question are:
|
svnadmin create project1
|
||||||
project1
|
chown -R wwwrun:www project1/{db,locks}
|
||||||
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
|
|
||||||
#
|
|
||||||
<IfModule mod_alias.c>
|
|
||||||
Alias /repos "/srv/svn/html"
|
|
||||||
</IfModule>
|
|
||||||
<Directory /srv/svn/html>
|
|
||||||
Options +Indexes +Multiviews -FollowSymLinks
|
|
||||||
IndexOptions FancyIndexing \
|
|
||||||
ScanHTMLTitles \
|
|
||||||
NameWidth=* \
|
|
||||||
DescriptionWidth=* \
|
|
||||||
SuppressLastModified \
|
|
||||||
SuppressSize
|
|
||||||
|
|
||||||
order allow,deny
|
|
||||||
allow from all
|
|
||||||
</Directory>
|
|
||||||
|
|
||||||
|
|
||||||
# project repository files for project1
|
|
||||||
<Location /repos/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
|
|
||||||
<LimitExcept GET PROPFIND OPTIONS REPORT>
|
|
||||||
Require group project1_committers
|
|
||||||
</LimitExcept>
|
|
||||||
|
|
||||||
# Limit read access to certain people
|
|
||||||
<Limit GET PROPFIND OPTIONS REPORT>
|
|
||||||
Require group project1_committers
|
|
||||||
Require group project1_readers
|
|
||||||
</Limit>
|
|
||||||
|
|
||||||
</Location>
|
|
||||||
|
|
||||||
# project repository files for project2
|
|
||||||
<Location /repos/project2>
|
|
||||||
DAV svn
|
|
||||||
SVNPath /srv/svn/repos/project2
|
|
||||||
|
|
||||||
# Limit write permission to list of valid users.
|
|
||||||
<LimitExcept GET PROPFIND OPTIONS REPORT>
|
|
||||||
# Require SSL connection for password protection.
|
|
||||||
# SSLRequireSSL
|
|
||||||
|
|
||||||
AuthType Basic
|
|
||||||
AuthName "Authorization for project2 required"
|
|
||||||
AuthUserFile /srv/svn/user_access/project2_passwdfile
|
|
||||||
Require valid-user
|
|
||||||
</LimitExcept>
|
|
||||||
</Location>
|
|
||||||
#------------------------------------------------------------------------
|
|
||||||
|
|
||||||
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}
|
|
||||||
|
|
||||||
|
If using svnserve is not planned, /srv/svn/repos may be owned by wwrun:www.
|
||||||
|
Otherwise see instruction in the svnserve section on how to use the user and
|
||||||
|
group svn.
|
||||||
|
|
||||||
The webserver must be (re)started:
|
The webserver must be (re)started:
|
||||||
rcapache2 restart
|
|
||||||
|
|
||||||
Now create the user access files:
|
rcapache2 restart
|
||||||
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
|
To create the user access files:
|
||||||
htpasswd2 /srv/svn/user_access/project1_passwdfile olh
|
|
||||||
|
|
||||||
this is the group file for project1:
|
touch /srv/svn/user_access/project1_passwdfile
|
||||||
/srv/svn/user_access/project1_groupfile
|
chown root:www /srv/svn/user_access/project1_passwdfile
|
||||||
content:
|
chmod 640 /srv/svn/user_access/project1_passwdfile
|
||||||
project1_committers: olh
|
|
||||||
project1_readers: olaf olh
|
|
||||||
|
|
||||||
project2 is world readable, but only a few can commit to the sources.
|
htpasswd2 /srv/svn/user_access/project1_passwdfile user1
|
||||||
touch /srv/svn/user_access/project2_passwdfile
|
htpasswd2 /srv/svn/user_access/project1_passwdfile user2
|
||||||
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:
|
Create the group file for project1:
|
||||||
http://host/repos/project2
|
/srv/svn/user_access/project1_groupfile
|
||||||
http://host/repos/project1
|
|
||||||
|
|
||||||
Now import the data, e.g.
|
project1_committers: user2
|
||||||
svn import /path/to/project2-tree http://host/repos/project2
|
project1_readers: user1 user2
|
||||||
|
|
||||||
|
|
||||||
|
You can test access by:
|
||||||
|
|
||||||
|
svn info http://127.0.0.1/repos/project1
|
||||||
|
|
||||||
|
================================================================================
|
||||||
|
|
||||||
|
2. allowing anonymous read access
|
||||||
|
|
||||||
4. quickstart for mod_dontdothat
|
To allow anonymous read access, remove the <Limit GET...> section and move the
|
||||||
|
three Auth* statements into the <LimitExcept GET...> section.
|
||||||
|
|
||||||
|
================================================================================
|
||||||
|
|
||||||
|
3. serving several repositories with SVNParentPath
|
||||||
|
|
||||||
|
When serving several repositories, instead of specifying each location with
|
||||||
|
SVNPath in a separate location, you can use SVNParentPath with a single location.
|
||||||
|
Change the <Location ...> directive form the template to start with the following:
|
||||||
|
|
||||||
|
<Location /repos/>
|
||||||
|
DAV svn
|
||||||
|
SVNParentPath /srv/svn/repos
|
||||||
|
SVNListParentPath on
|
||||||
|
|
||||||
|
Do not forget to restart the apache service to make the configuration effective.
|
||||||
|
|
||||||
|
service apache2 restart
|
||||||
|
|
||||||
|
================================================================================
|
||||||
|
|
||||||
|
4. serving the repositories at "/"
|
||||||
|
|
||||||
|
Include the configuration into the relevant vhost configuration. Uncomment the
|
||||||
|
section in the template files labeled 'Hosting svn at "/"' and adjust as required.
|
||||||
|
Note that this example uses "SVNParentPath" as given in the previous section.
|
||||||
|
|
||||||
|
================================================================================
|
||||||
|
|
||||||
|
5. running svnserve
|
||||||
|
|
||||||
|
Subversion repositories can be via the svnserve daemon and a special network
|
||||||
|
protocol. svnserve should not run as root user. The startup scripts expects a
|
||||||
|
user/group named 'svn', configureable via /etc/sysconfig/svnserve.
|
||||||
|
|
||||||
|
The subversion package now creates a user and group svn.
|
||||||
|
|
||||||
|
If you want to expose the repository via both svnserve and mod_dav_svn
|
||||||
|
(Apache httpd) in parallel, ensure that the apache user is part of the
|
||||||
|
svn group.
|
||||||
|
|
||||||
|
usermod -A svn wwwrun
|
||||||
|
|
||||||
|
This requires a restart of the apache2 service to become effective.
|
||||||
|
|
||||||
|
Change the permissions to let the svn group write, and set the setgid flag
|
||||||
|
on the repositories.
|
||||||
|
|
||||||
|
chown -R svn:svn /srv/svn/repos
|
||||||
|
chmod -R g+ws /srv/svn/repos
|
||||||
|
|
||||||
|
Then proceed to create reposititories using svnadmin create described above.
|
||||||
|
|
||||||
|
In either case, if using svnserve, ensure that the repositories are owned by
|
||||||
|
svn:svn.
|
||||||
|
|
||||||
|
The settings files with the options passed to the daemon is is located in:
|
||||||
|
|
||||||
|
/etc/sysconfig/svnserve
|
||||||
|
|
||||||
|
To start, ensure proper ownership of repositories and run:
|
||||||
|
|
||||||
|
service svnserve start
|
||||||
|
|
||||||
|
For further information about multi-method repository access, see
|
||||||
|
http://svnbook.red-bean.com/en/1.7/svn.serverconfig.multimethod.html
|
||||||
|
|
||||||
|
You can test repository access by:
|
||||||
|
|
||||||
|
svn info svn://127.0.0.1/project1
|
||||||
|
|
||||||
|
Please note that by default, svnserve is configured to be started with -R,
|
||||||
|
meaning read-only access only. Remove to allow write access, after you have
|
||||||
|
configued access via
|
||||||
|
|
||||||
|
/srv/svn/repos/repo1/conf/svnserve.conf
|
||||||
|
|
||||||
|
To configue authentication for svnserve, see
|
||||||
|
http://svnbook.red-bean.com/en/1.7/svn.serverconfig.svnserve.html#svn.serverconfig.svnserve.auth
|
||||||
|
|
||||||
|
================================================================================
|
||||||
|
|
||||||
|
6. quickstart for mod_dontdothat
|
||||||
|
|
||||||
The apache module mod_dontdothat can be used to prevent users from causing high
|
The apache module mod_dontdothat can be used to prevent users from causing high
|
||||||
load on the server, e.g. checking out the root of the tree or the tags or
|
load on the server, e.g. checking out the root of the tree or the tags or
|
||||||
@ -227,7 +182,7 @@ Add configuration for the module, e.g.
|
|||||||
|
|
||||||
<Location />
|
<Location />
|
||||||
DAV svn
|
DAV svn
|
||||||
SVNParentPath /srv/svn/repositories/
|
SVNParentPath /srv/svn/repos/
|
||||||
SVNListParentPath on
|
SVNListParentPath on
|
||||||
# [...other configuration...]
|
# [...other configuration...]
|
||||||
<IfModule mod_dontdothat.c>
|
<IfModule mod_dontdothat.c>
|
||||||
|
@ -1,3 +1,23 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue May 21 19:41:36 UTC 2013 - andreas.stieger@gmx.de
|
||||||
|
|
||||||
|
- use svnserveautocheck.sh and davautocheck.sh for unit tests,
|
||||||
|
greatly reducing complexity of spec file and adding support
|
||||||
|
for running unit tests with httpd 2.4 in factory
|
||||||
|
- add subversion-1.7.9-davautocheck-LD_LIBRARY_PATH.patch to
|
||||||
|
not overwrite LD_LIBRARY_PATH in davautocheck.sh to make
|
||||||
|
auth-test pass
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon May 20 19:30:52 UTC 2013 - andreas.stieger@gmx.de
|
||||||
|
|
||||||
|
- add systemd support for svnserve
|
||||||
|
- package now contains user and group svn
|
||||||
|
- adjust and extend README.SuSE to cover a quickstart with both
|
||||||
|
mod_dav_svn and svnserve, mention the user/group requirement for
|
||||||
|
parallel operation and make text more compact by referencing the
|
||||||
|
template config file [bnc#781980]
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue May 14 21:52:35 UTC 2013 - andreas.stieger@gmx.de
|
Tue May 14 21:52:35 UTC 2013 - andreas.stieger@gmx.de
|
||||||
|
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
# Example configuration for a subversion repository
|
# Example configuration for a subversion repository
|
||||||
# see /usr/share/doc/packages/subversion for the full documentation
|
# Install the package subversion-doc and see
|
||||||
|
# /usr/share/doc/packages/subversion for the full documentation
|
||||||
|
# An online version can be found at http://svnbook.red-bean.com/
|
||||||
#
|
#
|
||||||
|
|
||||||
<IfModule mod_dav_svn.c>
|
<IfModule mod_dav_svn.c>
|
||||||
@ -28,17 +30,26 @@
|
|||||||
#<Location /repos/myproject1>
|
#<Location /repos/myproject1>
|
||||||
# DAV svn
|
# DAV svn
|
||||||
# SVNPath /srv/svn/repos/myproject1
|
# SVNPath /srv/svn/repos/myproject1
|
||||||
|
#
|
||||||
|
# AuthType Basic
|
||||||
|
# AuthName "Authorization Realm"
|
||||||
|
# AuthUserFile /srv/svn/user_access/myproject1_passwdfile
|
||||||
|
#
|
||||||
|
# # Limit read access to certain people
|
||||||
|
# <Limit GET PROPFIND OPTIONS REPORT>
|
||||||
|
# # uncomment to require SSL connection for password protection.
|
||||||
|
# # SSLRequireSSL
|
||||||
|
# Require group project1_committers
|
||||||
|
# Require group project1_readers
|
||||||
|
# </Limit>
|
||||||
|
#
|
||||||
# # Limit write permission to list of valid users.
|
# # Limit write permission to list of valid users.
|
||||||
# <LimitExcept GET PROPFIND OPTIONS REPORT>
|
# <LimitExcept GET PROPFIND OPTIONS REPORT>
|
||||||
# # Require SSL connection for password protection.
|
# # uncomment to require SSL connection for password protection.
|
||||||
# # SSLRequireSSL
|
# # SSLRequireSSL
|
||||||
#
|
# Require project1_committers
|
||||||
# AuthType Basic
|
|
||||||
# AuthName "Authorization Realm"
|
|
||||||
# AuthUserFile /srv/svn/user_access/myproject1_passwdfile
|
|
||||||
# Require valid-user
|
|
||||||
# </LimitExcept>
|
# </LimitExcept>
|
||||||
|
#
|
||||||
#</Location>
|
#</Location>
|
||||||
|
|
||||||
##
|
##
|
||||||
@ -73,7 +84,7 @@
|
|||||||
# #
|
# #
|
||||||
# <Location />
|
# <Location />
|
||||||
# DAV svn
|
# DAV svn
|
||||||
# SVNParentPath /srv/svn/repositories/
|
# SVNParentPath /srv/svn/repos/
|
||||||
# SVNListParentPath on
|
# SVNListParentPath on
|
||||||
# AuthType Basic
|
# AuthType Basic
|
||||||
# AuthName "subversion repository"
|
# AuthName "subversion repository"
|
||||||
|
130
subversion.spec
130
subversion.spec
@ -45,6 +45,9 @@
|
|||||||
%define with_bashcomp 1
|
%define with_bashcomp 1
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
%define svngroup svn
|
||||||
|
%define svnuser svn
|
||||||
|
|
||||||
Name: subversion
|
Name: subversion
|
||||||
Version: 1.7.9
|
Version: 1.7.9
|
||||||
Release: 0
|
Release: 0
|
||||||
@ -63,6 +66,14 @@ BuildRequires: python-devel
|
|||||||
BuildRequires: python-xml
|
BuildRequires: python-xml
|
||||||
BuildRequires: update-alternatives
|
BuildRequires: update-alternatives
|
||||||
BuildRequires: zlib-devel
|
BuildRequires: zlib-devel
|
||||||
|
Requires(pre): pwdutils
|
||||||
|
#
|
||||||
|
%if 0%{?suse_version} > 1140
|
||||||
|
BuildRequires: pkgconfig(systemd)
|
||||||
|
%{?systemd_requires}
|
||||||
|
%define has_systemd 1
|
||||||
|
%endif
|
||||||
|
#
|
||||||
%if %with_bashcomp
|
%if %with_bashcomp
|
||||||
BuildRequires: bash-completion
|
BuildRequires: bash-completion
|
||||||
%endif #with_bashcomp
|
%endif #with_bashcomp
|
||||||
@ -108,8 +119,9 @@ BuildRequires: openldap2-devel
|
|||||||
%endif # suse_version > 1030
|
%endif # suse_version > 1030
|
||||||
%endif # with neon
|
%endif # with neon
|
||||||
%if %{with regression_tests}
|
%if %{with regression_tests}
|
||||||
# for check section, to find a free port:
|
# svnserveautocheck.sh davautocheck.sh requirements
|
||||||
BuildRequires: iproute2
|
BuildRequires: net-tools
|
||||||
|
BuildRequires: wget
|
||||||
%endif # with regression_tests
|
%endif # with regression_tests
|
||||||
#
|
#
|
||||||
%define _fwdefdir /etc/sysconfig/SuSEfirewall2.d/services
|
%define _fwdefdir /etc/sysconfig/SuSEfirewall2.d/services
|
||||||
@ -138,6 +150,8 @@ Source9: subversion.rcsvnserve
|
|||||||
Source10: subversion.sysconfig.svnserve
|
Source10: subversion.sysconfig.svnserve
|
||||||
Source12: subversion.sysconfig.svnserve.remoteaccess
|
Source12: subversion.sysconfig.svnserve.remoteaccess
|
||||||
Source13: subversion.xinetd.svnserve
|
Source13: subversion.xinetd.svnserve
|
||||||
|
Source14: svnserve.service
|
||||||
|
Source15: svnserve.tmpfiles
|
||||||
Source42: subversion.svngrep.sh
|
Source42: subversion.svngrep.sh
|
||||||
Source43: subversion.svndiff.sh
|
Source43: subversion.svndiff.sh
|
||||||
# https://people.apache.org/keys/group/subversion.asc
|
# https://people.apache.org/keys/group/subversion.asc
|
||||||
@ -160,8 +174,6 @@ BuildRequires: sqlite3-devel >= %{sqlite_version}
|
|||||||
%requires_ge libsqlite3-0
|
%requires_ge libsqlite3-0
|
||||||
%endif # with_intree_sqlite
|
%endif # with_intree_sqlite
|
||||||
Source92: %{name}.rpmlintrc
|
Source92: %{name}.rpmlintrc
|
||||||
Source93: subversion-tests-httpd.conf.tmpl
|
|
||||||
Source94: subversion-tests-httpd-users
|
|
||||||
#
|
#
|
||||||
Patch11: subversion.libtool-verbose.patch
|
Patch11: subversion.libtool-verbose.patch
|
||||||
# build fixes
|
# build fixes
|
||||||
@ -173,6 +185,7 @@ Patch37: subversion-no-build-date.patch
|
|||||||
Patch38: subversion-neon-systemproxy.patch
|
Patch38: subversion-neon-systemproxy.patch
|
||||||
Patch39: subversion-1.7.4-ruby-1.9-RbConfig.patch
|
Patch39: subversion-1.7.4-ruby-1.9-RbConfig.patch
|
||||||
Patch40: subversion-1.7.8-TestHarness_run_py_test_exit_code.patch
|
Patch40: subversion-1.7.8-TestHarness_run_py_test_exit_code.patch
|
||||||
|
Patch41: subversion-1.7.9-davautocheck-LD_LIBRARY_PATH.patch
|
||||||
#
|
#
|
||||||
%if %with_ruby
|
%if %with_ruby
|
||||||
%if %{!?rb_arch:1}0
|
%if %{!?rb_arch:1}0
|
||||||
@ -348,6 +361,7 @@ popd #./sqlite-amalgamation
|
|||||||
%patch38
|
%patch38
|
||||||
%patch39 -p1
|
%patch39 -p1
|
||||||
%patch40 -p1
|
%patch40 -p1
|
||||||
|
%patch41 -p1
|
||||||
|
|
||||||
SQLITE_RECOMMENDED_VER=$(grep -E '^SQLITE_RECOMMENDED_VER=' configure.ac|cut -f2 -d=|cut -f2 -d\")
|
SQLITE_RECOMMENDED_VER=$(grep -E '^SQLITE_RECOMMENDED_VER=' configure.ac|cut -f2 -d=|cut -f2 -d\")
|
||||||
#"
|
#"
|
||||||
@ -582,6 +596,13 @@ install -m 755 -D %{S:9} $RPM_BUILD_ROOT/etc/init.d/svnserve
|
|||||||
ln -sv /etc/init.d/svnserve $RPM_BUILD_ROOT/usr/sbin/rcsvnserve
|
ln -sv /etc/init.d/svnserve $RPM_BUILD_ROOT/usr/sbin/rcsvnserve
|
||||||
install -m 644 -D %{S:10} $RPM_BUILD_ROOT/var/adm/fillup-templates/sysconfig.svnserve
|
install -m 644 -D %{S:10} $RPM_BUILD_ROOT/var/adm/fillup-templates/sysconfig.svnserve
|
||||||
install -m 644 -D %{S:12} $RPM_BUILD_ROOT/%{_fwdefdir}/svnserve
|
install -m 644 -D %{S:12} $RPM_BUILD_ROOT/%{_fwdefdir}/svnserve
|
||||||
|
%{__install} -d -m 0755 %{buildroot}/srv/svn
|
||||||
|
%if 0%{?has_systemd}
|
||||||
|
install -m 644 -D %{S:14} $RPM_BUILD_ROOT/%{_unitdir}/svnserve.service
|
||||||
|
%{__install} -d -m 0755 %{buildroot}/var/run/svnserve/
|
||||||
|
%{__install} -d -m 0755 %{buildroot}/usr/lib/tmpfiles.d/
|
||||||
|
%{__install} -m 0644 %{SOURCE15} %{buildroot}/usr/lib/tmpfiles.d/svnserve.conf
|
||||||
|
%endif
|
||||||
#useless libtool stuff
|
#useless libtool stuff
|
||||||
rm -f %{buildroot}%{_libdir}/*.la
|
rm -f %{buildroot}%{_libdir}/*.la
|
||||||
if [ "$with_jdk" != "" ] ; then
|
if [ "$with_jdk" != "" ] ; then
|
||||||
@ -639,91 +660,21 @@ ulimit -a
|
|||||||
# During "make check", auth-test loads DSOs at runtime and can't find
|
# During "make check", auth-test loads DSOs at runtime and can't find
|
||||||
# them if we don't set up LD_LIBRARY_PATH as below.
|
# them if we don't set up LD_LIBRARY_PATH as below.
|
||||||
export LD_LIBRARY_PATH="$PWD/subversion/libsvn_auth_kwallet/.libs:$PWD/subversion/libsvn_auth_gnome_keyring/.libs:$LD_LIBRARY_PATH"
|
export LD_LIBRARY_PATH="$PWD/subversion/libsvn_auth_kwallet/.libs:$PWD/subversion/libsvn_auth_gnome_keyring/.libs:$LD_LIBRARY_PATH"
|
||||||
CHECK_FS_TYPE=fsfs
|
|
||||||
|
|
||||||
# run tests over ra_local (file://)
|
# run tests over ra_local (file://)
|
||||||
%__make check CLEANUP=true FS_TYPE="$CHECK_FS_TYPE"
|
%__make check CLEANUP=true FS_TYPE=fsfs
|
||||||
|
|
||||||
SVNSERVE_PIDFILE="$PWD/svnserve.pid"
|
|
||||||
HTTPD_PIDFILE="$PWD/httpd.pid"
|
|
||||||
# hook up cleanup routine
|
|
||||||
function on_exit {
|
|
||||||
if [ -e "$SVNSERVE_PIDFILE" ]; then
|
|
||||||
pid=`cat "$SVNSERVE_PIDFILE" 2>/dev/null || :`
|
|
||||||
test -n "$pid" && kill -9 "$pid" || :
|
|
||||||
fi
|
|
||||||
if [ -e "$HTTPD_PIDFILE" ]; then
|
|
||||||
pid=`cat "$HTTPD_PIDFILE" 2>/dev/null || :`
|
|
||||||
test -n "$pid" && kill -9 "$pid" || :
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
trap on_exit EXIT
|
|
||||||
|
|
||||||
# find next free port
|
|
||||||
function find_next_free_port {
|
|
||||||
if [ -z "$free_port" ]; then # on first invocation
|
|
||||||
local start_port=1025 # start with user port range
|
|
||||||
else # on subsequent invocations
|
|
||||||
local start_port=$free_port; # look for ports above the last
|
|
||||||
let start_port++; # as the daemon might still use it
|
|
||||||
fi
|
|
||||||
free_port=""
|
|
||||||
# in the OBS build VMs, the call to ss actually fails, resulting in all port to be returned as unused,
|
|
||||||
# subsequent calls to the function will use a sequence from 1025, which are always available in VM.
|
|
||||||
# For local builds this takes into account locally used ports. Either way works to get a usable port.
|
|
||||||
for p in `/usr/sbin/ss -nat|tail +2|awk '{ split($4, a, ":"); if (a[2] > 1024) { print a[2]; }}'`; do used_port[$p]="$p"; done
|
|
||||||
for p in `seq $start_port 65535`; do
|
|
||||||
if [ -z "${used_port[$p]}" ]; then
|
|
||||||
free_port="$p"
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
if [ -z "$free_port" ]; then
|
|
||||||
echo "ERROR: failed to find a free port" >&2
|
|
||||||
echo "Used TCP ports: ${used_port[*]}" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
find_next_free_port
|
|
||||||
|
|
||||||
# run tests over ra_svn (svn://)
|
# run tests over ra_svn (svn://)
|
||||||
"$PWD/subversion/svnserve/svnserve" --listen-host 127.0.0.1 --listen-port "$free_port" --pid-file "$SVNSERVE_PIDFILE" -d -r "$PWD/subversion/tests/cmdline"
|
%__make svnserveautocheck CLEANUP=true FS_TYPE=fsfs
|
||||||
%__make check CLEANUP=true FS_TYPE="$CHECK_FS_TYPE" BASE_URL="svn://127.0.0.1:$free_port"
|
|
||||||
kill -9 `cat "$SVNSERVE_PIDFILE" 2>/dev/null`
|
|
||||||
%__rm "$SVNSERVE_PIDFILE"
|
|
||||||
|
|
||||||
# run tests over ra_neon (http://)
|
# run tests over ra_neon (http://)
|
||||||
%if %{with neon}
|
%if %{with neon}
|
||||||
find_next_free_port
|
%__make davautocheck CLEANUP=true FS_TYPE=fsfs HTTP_LIBRARY=neon
|
||||||
# create apache configuration
|
|
||||||
%__cp "%{SOURCE94}" users
|
|
||||||
APACHE_LIBEXECDIR="%{apache_libexecdir}"
|
|
||||||
< "%{SOURCE93}" \
|
|
||||||
sed "s/REPLACE_PORT/$free_port/g" | \
|
|
||||||
sed "s/REPLACE_BUILDROOT/${RPM_BUILD_ROOT//\//\\/}/g" | \
|
|
||||||
sed "s/REPLACE_BUILDDIR/${PWD//\//\\/}/g" | \
|
|
||||||
sed "s/REPLACE_APACHE_LIBEXECDIR/${APACHE_LIBEXECDIR//\//\\/}/g" > httpd.conf
|
|
||||||
LD_LIBRARY_PATH="%{buildroot}%{_libdir}:$LD_LIBRARY_PATH" /usr/sbin/httpd2 -d "$PWD" -f httpd.conf
|
|
||||||
%__make check CLEANUP=true FS_TYPE="$CHECK_FS_TYPE" BASE_URL=http://127.0.0.1:$free_port HTTP_LIBRARY=neon
|
|
||||||
kill -9 `cat "$HTTPD_PIDFILE" 2>/dev/null`
|
|
||||||
%__rm "$HTTPD_PIDFILE"
|
|
||||||
%endif # neon
|
%endif # neon
|
||||||
|
|
||||||
# run tests over ra_serf (http://)
|
# run tests over ra_serf (http://)
|
||||||
%if %{with serf}
|
%if %{with serf}
|
||||||
find_next_free_port
|
%__make davautocheck CLEANUP=true FS_TYPE=fsfs HTTP_LIBRARY=serf
|
||||||
# create apache configuration
|
|
||||||
%__cp "%{SOURCE94}" users
|
|
||||||
APACHE_LIBEXECDIR="%{apache_libexecdir}"
|
|
||||||
< "%{SOURCE93}" \
|
|
||||||
sed "s/REPLACE_PORT/$free_port/g" | \
|
|
||||||
sed "s/REPLACE_BUILDROOT/${RPM_BUILD_ROOT//\//\\/}/g" | \
|
|
||||||
sed "s/REPLACE_BUILDDIR/${PWD//\//\\/}/g" | \
|
|
||||||
sed "s/REPLACE_APACHE_LIBEXECDIR/${APACHE_LIBEXECDIR//\//\\/}/g" > httpd.conf
|
|
||||||
LD_LIBRARY_PATH="%{buildroot}%{_libdir}:$LD_LIBRARY_PATH" /usr/sbin/httpd2 -d "$PWD" -f httpd.conf
|
|
||||||
%__make check CLEANUP=true FS_TYPE="$CHECK_FS_TYPE" BASE_URL=http://127.0.0.1:$free_port HTTP_LIBRARY=serf
|
|
||||||
kill -9 `cat "$HTTPD_PIDFILE" 2>/dev/null`
|
|
||||||
%__rm "$HTTPD_PIDFILE"
|
|
||||||
%endif # serf
|
%endif # serf
|
||||||
|
|
||||||
%if %with_java
|
%if %with_java
|
||||||
@ -743,16 +694,33 @@ kill -9 `cat "$HTTPD_PIDFILE" 2>/dev/null`
|
|||||||
%clean
|
%clean
|
||||||
%__rm -rf "%{buildroot}"
|
%__rm -rf "%{buildroot}"
|
||||||
|
|
||||||
|
%pre
|
||||||
|
getent group %{svngroup} >/dev/null || groupadd -r %{svngroup}
|
||||||
|
getent passwd %{svnuser} >/dev/null || useradd -r -g %{svngroup} -d /srv/svn -s /sbin/nologin -c "user for Apache Subversion svnserve" %{svnuser}
|
||||||
|
%if 0%{?has_systemd}
|
||||||
|
%service_add_pre svnserve.service
|
||||||
|
%endif
|
||||||
|
|
||||||
%preun
|
%preun
|
||||||
%stop_on_removal svnserve
|
%stop_on_removal svnserve
|
||||||
|
%if 0%{?has_systemd}
|
||||||
|
%service_del_preun svnserve.service
|
||||||
|
%endif
|
||||||
|
|
||||||
%post
|
%post
|
||||||
%{fillup_and_insserv -n svnserve svnserve}
|
%{fillup_and_insserv -n svnserve svnserve}
|
||||||
|
%if 0%{?has_systemd}
|
||||||
|
%service_add_post svnserve.service
|
||||||
|
systemd-tmpfiles --create /usr/lib/tmpfiles.d/svnserve.conf
|
||||||
|
%endif
|
||||||
/sbin/ldconfig
|
/sbin/ldconfig
|
||||||
|
|
||||||
%postun
|
%postun
|
||||||
%restart_on_update svnserve
|
%restart_on_update svnserve
|
||||||
%{insserv_cleanup}
|
%{insserv_cleanup}
|
||||||
|
%if 0%{?has_systemd}
|
||||||
|
%service_del_postun svnserve.service
|
||||||
|
%endif
|
||||||
/sbin/ldconfig
|
/sbin/ldconfig
|
||||||
|
|
||||||
%post -n subversion-python -p /sbin/ldconfig
|
%post -n subversion-python -p /sbin/ldconfig
|
||||||
@ -790,7 +758,13 @@ kill -9 `cat "$HTTPD_PIDFILE" 2>/dev/null`
|
|||||||
%attr(754,root,root) /etc/init.d/svnserve
|
%attr(754,root,root) /etc/init.d/svnserve
|
||||||
%attr(754,root,root) /usr/sbin/rcsvnserve
|
%attr(754,root,root) /usr/sbin/rcsvnserve
|
||||||
/var/adm/fillup-templates/sysconfig.svnserve
|
/var/adm/fillup-templates/sysconfig.svnserve
|
||||||
|
%dir %attr(755,%{svnuser},%{svngroup}) /srv/svn
|
||||||
%config %{_fwdefdir}/*
|
%config %{_fwdefdir}/*
|
||||||
|
%if 0%{?has_systemd}
|
||||||
|
%{_unitdir}/svnserve.service
|
||||||
|
%ghost %dir %attr(755,%{svnuser},%{svngroup}) /var/run/svnserve
|
||||||
|
/usr/lib/tmpfiles.d/svnserve.conf
|
||||||
|
%endif
|
||||||
#
|
#
|
||||||
%attr(755,root,root) /usr/bin/svn
|
%attr(755,root,root) /usr/bin/svn
|
||||||
%attr(755,root,root) /usr/bin/svnadmin
|
%attr(755,root,root) /usr/bin/svnadmin
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
# The -R option enforces read-only access, i.e. write operations to the
|
# The -R option enforces read-only access, i.e. write operations to the
|
||||||
# repository (such as commits) will not be allowed.
|
# repository (such as commits) will not be allowed.
|
||||||
# Authentication should be configured before allowing write access.
|
# Authentication should be configured before allowing write access.
|
||||||
# See http://svnbook.red-bean.com/en/1.5/svn.serverconfig.svnserve.html#svn.serverconfig.svnserve.auth
|
# See http://svnbook.red-bean.com/en/1.7/svn.serverconfig.svnserve.html#svn.serverconfig.svnserve.auth
|
||||||
#
|
#
|
||||||
SVNSERVE_OPTIONS="-d -R -r /srv/svn/repos"
|
SVNSERVE_OPTIONS="-d -R -r /srv/svn/repos"
|
||||||
|
|
||||||
@ -16,8 +16,12 @@ SVNSERVE_OPTIONS="-d -R -r /srv/svn/repos"
|
|||||||
## Default "svn"
|
## Default "svn"
|
||||||
#
|
#
|
||||||
# svnserve should run as unprivileged user.
|
# svnserve should run as unprivileged user.
|
||||||
# The userid/groupid svn is not created during package install.
|
# If you want to expose the repository via both svnserve and mod_dav_svn
|
||||||
# Run 'groupadd svn; useradd -d /srv/svn -s /bin/false -g svn svn' to create the userid/groupid.
|
# (Apache httpd) in parallel, ensure that the apache user is part of the
|
||||||
|
# svn group and the setgid flag is set on the repositories
|
||||||
|
# usermod -A svn wwwrun
|
||||||
|
# chmod -R g+s /srv/svn/repos
|
||||||
|
# See http://svnbook.red-bean.com/en/1.7/svn.serverconfig.multimethod.html
|
||||||
#
|
#
|
||||||
SVNSERVE_USERID="svn"
|
SVNSERVE_USERID="svn"
|
||||||
|
|
||||||
@ -25,7 +29,11 @@ SVNSERVE_USERID="svn"
|
|||||||
## Default "svn"
|
## Default "svn"
|
||||||
#
|
#
|
||||||
# svnserve should run as unprivileged user.
|
# svnserve should run as unprivileged user.
|
||||||
# The userid/groupid svn is not created during package install.
|
# If you want to expose the repository via both svnserve and mod_dav_svn
|
||||||
# Run 'groupadd svn; useradd -d /srv/svn -s /bin/false -g svn svn' to create the userid/groupid.
|
# (Apache httpd) in parallel, ensure that the apache user is part of the
|
||||||
|
# svn group and the setgid flag is set on the repositories
|
||||||
|
# usermod -A svn wwwrun
|
||||||
|
# chmod -R g+s /srv/svn/repos
|
||||||
|
# See http://svnbook.red-bean.com/en/1.7/svn.serverconfig.multimethod.html
|
||||||
#
|
#
|
||||||
SVNSERVE_GROUPID="svn"
|
SVNSERVE_GROUPID="svn"
|
||||||
|
14
svnserve.service
Normal file
14
svnserve.service
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Subversion protocol daemon
|
||||||
|
After=syslog.target network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=forking
|
||||||
|
EnvironmentFile=/etc/sysconfig/svnserve
|
||||||
|
User=svn
|
||||||
|
Group=svn
|
||||||
|
PIDFile=/var/run/svnserve/svnserve.pid
|
||||||
|
ExecStart=/usr/bin/svnserve --daemon --pid-file=/var/run/svnserve/svnserve.pid $SVNSERVE_OPTIONS
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
1
svnserve.tmpfiles
Normal file
1
svnserve.tmpfiles
Normal file
@ -0,0 +1 @@
|
|||||||
|
D /var/run/svnserve 0755 svn svn -
|
Loading…
x
Reference in New Issue
Block a user